Switch 2 Modding Guide

Start here

ns2jb is a softmod for the Nintendo Switch 2 that starts from a program you type into the game SmileBASIC 4. A computer on your network then walks the console through four stages, until it runs code as a system module and as the filesystem service. It's tethered and research-grade: a reboot puts the console back to stock, many runs fail, and there are no ready-made mods yet.

Is this for you?#

It is if you want to research or learn, you own the hardware and the full game, and you don't mind many failed tries.

You'll need:

It isn't for you yet if you want custom firmware, mods that survive a reboot, or emulators. None of those exist, and staff say emulation is far off. The full requirements are in Get it running.

Stuck on a message on screen? Go to Troubleshooting. Following the research? Start at Where the project stands.

Pick your path#

The host runs on macOS or Linux, or on WSL with extra setup; what you own decides how you type the bootstrap.

What you ownType the bootstrap withRun the host on
Nothing extraHand typing, on a USB keyboard or the on-screen keyboard (2.5–4 hours, once)Your Mac or Linux computer
A Linux PCHand typing, or any device belowThat PC
An Apple Silicon Macmac2jb (needs SIP lowered for its driver), or any device belowThat Mac
An Intel MacHand typing, or any device belowThat Mac
Only a Windows PCHand typing, or any device belowA Linux live USB, or WSL set up as in Run it › Windows and WSL
A Raspberry Pi Pico (RP2040 or RP2350)pico-smilebasic-autotyperYour Mac or Linux computer
An ESP32-S2 or S3 boardAn ESP32 typer (S2 and S3 only)Your Mac or Linux computer
A modded Switch 1plume-usb or nxhidYour Mac or Linux computer
A rooted Android phoneswitch-script-keyboardYour Mac or Linux computer
A Flipper ZeroA BadUSB script (one report)Your Mac or Linux computer
A Steam Deck, Raspberry Pi Zero W or Pi 4BA USB-keyboard script (one report for the Pi 4B)Your Mac or Linux computer

A Windows PC can't act as a USB keyboard without extra hardware, and the ns2jb README supports only macOS and Linux hosts. Each method's setup is in Type the bootstrap, and each host's in Run it.

Want homebrew rather than the filesystem demo? HBLauncher skips the filesystem stage. It starts far more reliably but can't reach the console's wider filesystem. Verified; see Run it › After 4/4.

Risks in brief#

The real risks are firmware lock-in, a brick from writes or tinkering, and unvetted files; no ban has been reported as of 10-26.

Remote bricking by Nintendo has no evidence behind it.

What's verified, what's claimed, what's refuted#

Verified means documented or independently reported by two or more people; Unverified means one report with nothing against it; Refuted means the evidence shows it's false.

Verified#

Unverified#

Refuted#

Short answers on each are in the FAQ.

What this community stands for#

This is a research and education project, run on your own hardware with games you bought.

  • Research and education. ns2jb is for security research and learning, and the support lead's notice says it isn't ready to be used freely.
  • Your own hardware and legally bought games. Run it on your own console with a copy of SmileBASIC 4 you bought. Back up only games you own; see Backing up your own games.
  • No piracy, and dumps stay private. Staff ask that full dumps are never shared in the community, and the same goes for extracted assets; see Datamining › Ground rules.
  • Official releases, vetted before you run them. Download from the maintainers' own repos in Links and tools. Treat files posted anywhere else as untested until someone vets them.
  • Findings shared, with credit. Post results in the research threads, such as Improving ns2jb reliability, and credit the work you build on.

Get it running

Three steps get ns2jb running: prepare your console, type the bootstrap, then run it. You do the first two once; the run itself often takes many tries.

Typing takes minutes with a typing device, or a few hours by hand. Success shows only in your computer's terminal, as "FS execution verified", and restarting the console undoes it. Before you start, read Start here › Risks in brief.

The whole run at a glance#

1Prepare your consoleonce

  1. Console on firmware 23.0.1
  2. Auto-update off, 90DNS on every network
  3. SmileBASIC 4.4.9 (full game)
  4. Settings item 3: (A) or (B)?
  5. (A)kurumuz's fork (upstream also works)(B)kurumuz's fork

2Type the bootstraponce

  1. Make a Program: type the bootstrap contents
  2. Method
  3. by handPico, ESP32, Flippermodded Switch 1, rooted Android, Mac
  4. Save as NS2 in slot 0

3Run itevery session

  1. Full restart; on the host, node run.cjs
  2. Direct mode: LOAD, RUN, REMOVE, V=START(...)
  3. 1/4 check console
  4. 2/4 acquire FS memorystall: restart, retry
  5. 3/4 native helperstall: restart, retry
  6. 4/4 FS execution verified
  7. Restart: back to stock
Dashed path, from Direct mode with a launcher host: skips the FS stagesOptional: HBLauncher, ftpd-sb, shader apps

From a stock console to a verified run.

The dashed path is Verified: HBLauncher skips the FS stages, so it starts far more reliably, but without file access (Run it › After 4/4).

Runs often stall at 2/4 or 3/4. A stall means a full restart and another try, as Run it › Retry routine describes.

Requirements#

WhatVersion or needNotes
Console firmware23.0.1 exactlyThe only version ns2jb supports. It was still the newest as of 26 Oct, about 11:55 UTC, and there's no downgrade.
SmileBASIC 44.4.9, the full gameAny region's 4.4.9 works. The free demo is 4.4.6 and can't complete a run.
Save spaceOver 20 MiB freeFree space in SmileBASIC's own save. If it fills, raise the save size in SmileBASIC's settings.
Install locationSystem memoryNot on a microSD card, where runs failed for two users.
ComputermacOS or Linux, Node.js 22+It runs the host. Native Windows fails, but WSL works once set up (Run it › Windows and WSL).
NetworkConsole and computer on one networkTCP port 39380. No internet is needed. Wire the console: one tester's Wi-Fi runs all stopped at 2/4, though a helper calls Wi-Fi possible but finicky (Run it › Best odds).
TypingA USB keyboard or a typing deviceSee Type the bootstrap › Choose a method.
microSD cardNot needed to runns2jb doesn't use one. Whether to take the card update now: Prepare your console › If you want to use a card.
ns2jb buildkurumuz's fork (recommended) or upstreamNeither has a tagged release. The fork's START line differs; see Prepare your console › Choose your build.
mac2jb (optional)v0.4.3Mac typing tool, released 26 Oct. It can also load homebrew and OunceCake after a run. It needs its bundled bootstrap.
HBLauncher (optional)v0.2.0Shader apps after 4/4.
ftpd-sb (optional)v0.1.0Needs HBLauncher 0.2.0+.

SmileBASIC 4 is no longer sold in any region. It was delisted, not patched. A copy you already bought can still be re-downloaded as of 25 Oct. That means going online, so do it only while 23.0.1 is the newest firmware. It needs no DLC.

The three steps#

  1. Prepare your console, once: check your versions, block updates with 90DNS, check your console's layout and pick a build.
  2. Type the bootstrap, once: type the program into SmileBASIC and save it. Compare the options in Type the bootstrap › Choose a method.
  3. Run it, every session: start the host, enter four short lines, and retry until 4/4.

If a run fails, Troubleshooting › Symptom index lists fixes by symptom.

Get it running ›

Prepare your console

Do this once, before anything else. It keeps your console on the versions ns2jb needs and tells you which build to run.

Check your versions#

Your console needs firmware 23.0.1 and SmileBASIC 4 4.4.9, the full game. Get it running › Requirements lists the rest. ns2jb has only been verified on 23.0.1.

Staying on 23.0.1 has a cost. Game cards carry firmware updates, and one that needs newer firmware won't play until you update.

Controller and dock updates are different. They install from the console itself, and one user took a controller update with 90DNS on. Of the updates people mention, only the microSD-slot update needs internet.

Stop updates with 90DNS#

90DNS blocks Nintendo's update and eShop servers, so nothing moves you off 23.0.1. It doesn't interfere with the run, and the run doesn't need it to work. It protects your versions, so keep it on during runs too.

  1. Do anything that needs Nintendo's servers first. One user couldn't delete a Nintendo-linked user account with 90DNS on. To activate the microSD slot, see If you want to use a card first.
  2. Turn off automatic software updates in System Settings.
  3. Set DNS on the console itself, not on the router: System Settings → Internet → Internet Settings, pick the network, then DNS Settings → Manual.
  4. Enter both 90DNS servers. In the Americas, use primary 207.246.121.77 and secondary 163.172.141.219; elsewhere, swap them. Don't use a public DNS such as 1.1.1.1 as the secondary.
  5. Set both IPv6 DNS fields to ::, as the mac2jb README and these manual DNS steps describe. Then save.
  6. Repeat on every saved network, Ethernet included, because DNS is set per network.
  7. Fully restart the console. DNS changes apply only after a restart.

Good to know:

Confirm the block#

After the restart, connect with airplane mode off and open the eShop. Error 2811-1007 ("Unable to display page.") is the only result that confirms the block. "This feature is not available" isn't a block; it means The supernag.

If the eShop still opens, check your router. An ISP router pushing its own DNS overrode 90DNS for one user, and another got the expected error over a phone hotspot. Restart after every DNS change before you test again, and see Troubleshooting › Console prep.

The supernag#

The supernag locks the console's web applets once it has gone without reaching Nintendo for a while. The browser, eShop and captive-portal pages then show "This feature is not available". It isn't tied to ns2jb: it happens on any firmware, and a never-modded console got it too. 90DNS doesn't prevent it.

What triggers it is Disputed, and neither side is stronger. One user points to 90DNS itself, another to any disconnection, such as airplane mode. Whether reboots speed it up is unclear too.

Can you prevent it?

microSD and your layout#

If you've used a microSD card in this console, it has probably taken the update; use kurumuz's fork. ns2jb itself doesn't need a card.

Check your layout#

Open System Settings → Support/Health & Safety and look at item 3. (B) means the update is installed, and (A) means it isn't. The check comes from the fork README, and kurumuz confirms (B) means installed. Switchbrew's page reads the other way, but it describes Switch 1.

Copying photos from a card works without the update, so it proves nothing. Item 3 is the reliable check.

If you want to use a card#

Whether to take the update now is Disputed; for a 23.0.1 console, the take-it side is now stronger. On 25 Oct kurumuz reversed their earlier "skip it if you won't use a card" and now urges taking it, since homebrew will need a card. Hexa agrees. Either way, a (B) console needs kurumuz's fork.

The condition: the update installs whatever firmware is newest. Take it only while that's 23.0.1; once newer firmware ships, it would move the console past 23.0.1, which ns2jb doesn't support. Taking it also means turning 90DNS off, which SD.md requires, so do it before modding.

  1. Check Nintendo's system update page shows nothing newer than 23.0.1. Then turn 90DNS off and restart. The update comes from Nintendo's servers.
  2. Format a regular microSD card as exFAT on a computer. FAT32 never offers the update, and a Switch 1 formats cards of 32 GB or less as FAT32. You don't need an Express card.
  3. Go to System Settings → Data Management → Manage Screenshots and Videos → Import from a Nintendo Switch microSD card.
  4. Insert the card only when asked, then accept the update.
  5. Set 90DNS again, restart, and Confirm the block.
  6. Check item 3 again; it should show (B). If you have an Express card you'll use later, insert it now too, while 23.0.1 is the newest (see Express cards above).

The update runs only once per console. If item 3 already shows (B), no prompt appears, because it's installed. Card errors are in Troubleshooting › Console prep.

Choose your build#

Use kurumuz's fork if item 3 shows (B); it also works on (A). The community guide recommends it either way, and kurumuz confirms it's still the one to use. Upstream pepsipu/ns2jb expects the (A) layout only.

Upstream ns2jbkurumuz's fork
Layouts(A) only(A) and (B), auto-detected
Host waitsShorter3 min idle, 2 min per response
Other changesNoneMore bounded retries, temp-file cleanup and a free-space check fix (fork README). OunceCake support was merged 25 Oct
BootstrapOriginalPairing code removed; an original NS2 still works (Type the bootstrap › What you're typing)
Host OSmacOS, LinuxSame as upstream
ReleaseNo tagNo tag; created 23 Oct

The fork isn't a cure. It can still fail at 3/4, and kurumuz says it may not help if you never reached 3/4. It doesn't fix Wi-Fi either (Run it › Best odds).

Whether it helps at 2/4 is Disputed, and the it-helps side is stronger. One user went from about 100 failures to 4/4 almost every time, while another found it worse than upstream.

Get it running ›

Type the bootstrap

You type it once; the full game saves it. Later runs load the saved program and need only four short lines (Run it › Step by step). The free demo can't save it, and it can't complete a run anyway.

What you're typing#

You type the contents of bootstrap.bas from your build's repo, kurumuz's fork or upstream: about 224–229 lines and 7,800 characters, starting at the first VAR line. Typing the file name does nothing, and SmileBASIC has no way to download it. HBLauncher uses the usual bootstrap, not one of its own.

  1. Open SmileBASIC, choose Make a Program, and press X for the editor. Don't type it in Direct mode.
  2. Type the program, or let your device type it.
  3. Save it as NS2 in slot 0: press Ctrl+S on a keyboard, or press minus and choose Simple Save. If the menu says Load instead, CapsLock is on.
  4. Go through Check your typing before your first run.

The fork's bootstrap differs. kurumuz removed the pairing code, so the fork's START takes only the port and the computer's IP. If you're typing it now, take it from the same build as your host.

Settings every method needs#

Set these before you type, whatever the method.

Choose a method#

An ordinary Windows or desktop PC can't act as a USB keyboard, so you either type by hand or use a device that can. Only this first typing needs a device; later runs need four short lines you can type yourself. Every method below ends with the same saved program, so pick one you already own.

MethodYou needEvidenceToolNote
Hand typingA USB keyboardVerifiedNone2–5 hours, typo-prone
Raspberry Pi Pico (RP2040)A Pico or other RP2040/RP2350 boardVerifiedpico-smilebasic-autotyperCheap
ESP32-S2/S3An S2 or S3 boardVerifiedNone vettedWrite your own
Modded Switch 1A homebrew Switch 1Verifiedplume-usb, nxhidBottom USB-C port
Rooted AndroidA rooted phone or handheldVerifiedswitch-script-keyboardRoot required
Mac (mac2jb)An Apple Silicon MacOfficial; v0.4.3 Unverifiedmac2jbNeeds SIP lowered
Flipper ZeroA Flipper ZeroVerifiedBadUSB script20–40 minutes
Other devicesA Pi, Steam Deck, Arduino or DuckyVariesVariesSee the section

Hand typing#

Needs: a wired USB keyboard, in the dock's USB-A port when docked. One user found Bluetooth keyboards aren't supported. The on-screen keyboard opens with minus.

Setup: apply Settings every method needs, type from the first VAR line to the end, and save.

Known issues:

Evidence: Verified. Several users typed it by hand, and one who took 2.5 hours later reached 4/4.

Raspberry Pi Pico (RP2040)#

Needs: a Raspberry Pi Pico (RP2040), a USB cable, and any computer for setup. A Pico is cheap. A Pico W and a Waveshare RP2350 also work. HBLauncher's official setup uses a Pico 2 W that also types the bootstrap (Run it › After 4/4).

Setup (pico-smilebasic-autotyper):

  1. Hold BOOTSEL while plugging the Pico into your computer, then copy the bundled CircuitPython UF2 to it.
  2. Copy boot.py, code.py, bootstrap.bas and lib/ to the CIRCUITPY drive.
  3. Open the SmileBASIC editor, then plug the Pico into the console. It types the program.

The CIRCUITPY drive then disappears on purpose, so the Pico shows up only as a keyboard; the README explains how to get it back.

Known issues:

Evidence: Verified. Two users report Pico typers working, one on a Pico and one on a Pico W. Another says they've been using pico-smilebasic-autotyper on an RP2040.

ESP32-S2/S3#

Needs: an ESP32-S2 or ESP32-S3 board, the variants with native USB.

Setup: no vetted ESP32 typer has been published, so you write your own. The nxcontroller firmware for the ESP32-S3 is an untested file (Links and tools › Known fakes and untested files). One user's board takes text from a web server and types it. On a board with two USB-C ports, one user types through the native USB one.

Known issues: typing too fast made one user's run go wrong twice. Slow it down as Settings every method needs describes.

Evidence: Verified. Three users report typers working, on an S2 and on S3 boards. Using other ESP32 boards is Refuted: they can't act as a keyboard.

Modded Switch 1#

Needs: a homebrew-enabled Switch 1, a USB-C cable and an OTG adapter, plus one of these:

Setup:

  1. Install the homebrew on the Switch 1 and put the bootstrap text on it.
  2. Plug into the Switch 2's bottom USB-C port, not the top, with the OTG adapter on the Switch 2 side.
  3. Open the SmileBASIC editor and send the file.

nxhid can also send the Direct-mode lines on later runs.

Known issues:

Evidence: Verified for the Switch 1 route and plume-usb: several users typed it this way, including one who got it working after changing ports. jgallardst's nxhid fork is Unverified; only its author reports it working.

Rooted Android#

Needs: a rooted Android 9+ phone or handheld whose kernel supports USB HID gadgets (configfs), and pecrow's switch-script-keyboard v1.2. Root is required.

Setup:

  1. Install the APK from the v1.2 GitLab release, and check it against its SHA256SUMS.
  2. Connect to the Switch 2 through the dock or directly over USB-C.
  3. Open the SmileBASIC editor, then send the bootstrap text from the app.

Known issues:

Evidence: Verified. kurumuz types with an Odin 2. Other users report rooted handhelds and phones working.

Mac (mac2jb)#

Needs:

Setup:

  1. Download mac2jb only from its GitHub Releases. The app is ad-hoc signed and not notarized, so approve it under System Settings → Privacy & Security → Open Anyway (GUI guide).
  2. Lower the Mac's security as described below, then choose Install & load driver… (CLI: mac2jb.command --install-driver) and restart when asked. Continue once the app reports the driver loaded.
  3. Connect the cable. Don't let the Mac charge the Switch; if it does, unplug and reconnect.
  4. The first time, choose Type bootstrap only: open an empty SmileBASIC editor and let mac2jb type, about 7–10 minutes at 50 ms per key. Check the program, then press X and save with SAVE "NS2"; mac2jb doesn't save it for you.
  5. Typed NS2 from the original bootstrap? Retype it with step 4. mac2jb needs its bundled kurumuz bootstrap, and an original NS2 won't work with it.
  6. On later runs, restart the console, open Direct mode, then choose a mode. mac2jb starts its host and sends the Direct-mode lines for you:
    • Held RPC, the default, keeps the connection open for homebrew and OunceCake.
    • System-code dump saves accessible system-program code, then finishes.
    • NS2JB exploit only checks the exploit and finishes. It can't launch homebrew.
  7. After a Held RPC run reaches 4/4, mac2jb can launch one homebrew tool or OunceCake per session, with no Pico needed.

Known issues:

  • mac2jb sends US-QWERTY keycodes, whatever your Mac's layout. Set the Switch's USB keyboard to English (US); changing the Mac's layout doesn't help.
  • The app tries USB controllers usb-drd0, usb-drd1 and usb-drd3. That mapping was seen on Mac16,1 only, and you can pick any from 0 to 15.
  • A loaded driver doesn't prove it works; characters appearing in SmileBASIC do. "Keyboard transfer completed" means only that the keys went out.
  • Older tutorials describe building the driver yourself. v0.4.3 bundles it.
  • Its "demo" option doesn't make the free demo reach 4/4. It only gets the bootstrap running; the run itself can't work there, since the demo lacks the temporary storage it needs.
  • An early v0.4.x report describes a "driver couldn't load" loop after restarting (Unverified).
  • Mac users' runs stall at the same stages as everyone's, so a Mac isn't reliably better than Linux. The author's successful tests were all over Ethernet.

Evidence: Official tool. Typing is Verified on earlier builds: two users typed with a Mac and reached 2/4 with mac2jb. v0.4.3 is Unverified beyond the author's own tests.

The SIP trade-off#

mac2jb loads an unsigned kernel extension, which your Mac's SIP and startup security must permit. It's a real security cost, and the choice is yours.

What you change (mac2jb README, Official)

  • Reduced Security: in macOS Recovery's Startup Security Utility, choose Reduced Security. Tick "Allow user management of kernel extensions from identified developers".
  • SIP off: in Recovery's Terminal, run csrutil disable, then restart. Back in macOS, csrutil status should report SIP disabled.
  • A partial or custom SIP setup: if the driver already loads with one, keep it. v0.4.1 removed the check that wanted SIP fully disabled.
  • AMFI: not needed. The README doesn't ask for it, and mac2jb doesn't change it. One user had it off, an untested extra.

What it costs (general macOS behaviour)

  • SIP stops even an administrator from changing protected parts of macOS, and Reduced Security lets unsigned code run with kernel privileges.
  • Together they make the Mac easier to compromise, and the driver is experimental third-party code.
  • mac2jb's README says disabling SIP reduces macOS protection, and mac2jb doesn't change it for you.

Turning it back on (your decision; general macOS procedure)

mac2jb's README says fully re-enabling SIP after installing the driver hasn't been verified. It may stop the driver working after a later kernel-collection rebuild. If you still want protections back:

  1. Restart into Recovery: hold the power button until startup options appear, then choose Options.
  2. Open Terminal from the Utilities menu, run csrutil enable, and restart.
  3. To undo Reduced Security, set Full Security in the same Startup Security Utility.
  4. If you turned AMFI off, turn it back on too.

If the driver then stops loading, using mac2jb again means lowering security and installing the driver again.

Keeping the SIP-off time short. You type the bootstrap once, and later runs need just four short lines. Typed by hand with kurumuz's fork as the host, they need no driver, so one mac2jb session can be enough. mac2jb's own runs, Held RPC included, type those lines over the cable, so they do need it. That's a suggestion, not a mac2jb instruction.

If you'd rather not lower security at all, use another method. The Mac still works as the host (Run it › macOS).

Flipper Zero#

Needs: a Flipper Zero with BadUSB, and a BadUSB script for the bootstrap, such as the one in this r/switch2hacks post. Set the console's USB keyboard to English (US).

Setup:

  1. Copy the script to the Flipper.
  2. Open the SmileBASIC editor, connect the Flipper, and run the script from BadUSB.

Known issues:

Evidence: Verified. Two users report typing it with a Flipper, one on Unleashed firmware. The Reddit script itself is Unverified.

Other devices#

These work in principle, but most have fewer reports.

DeviceEvidenceNotes
Raspberry Pi with device-mode USB (Pi 4B, Pi Zero, Pi Zero W)VerifiedSeveral users typed with one (Pi 4B, Pi Zero). Another got a Pi Zero W typing. One helper says to use the data port, not the power port, though they weren't sure which is which.
Steam Deck or another dual-role Linux deviceVerifiedA Steam Deck typed for one user and for another. One says it works after a BIOS setting. A Linux PC needs a USB port with device mode, which depends on the motherboard. An AI-written Steam Deck script shared on Discord is an untested file.
Arduino with native USB HIDUnverifiedOne user shared a sketch on Discord; it's an untested file.
USB Rubber DuckyUnverifiedA payload repo exists, but no one has reported using it or reviewed its code.
Switch 1 Picofly board (RP2040)UnverifiedOne user typed with one; it's a regular RP2040 if its USB port is exposed.
Raspberry Pi 2 or 3UnknownUntested.

Check your typing#

Check the program before your first run; most early failures are typos.

Then run it. After V=START(...), a correct program shows BOOT OK, while BOOT FAILED with a number means a typo. Troubleshooting › Typing explains the codes.

Get it running ›

Run it

A wired console plus kurumuz's fork is the best-supported setup. Both are Verified improvements, but neither guarantees a run: some wired users on the fork still stall at 2/4, so expect several tries.

Best odds#

ChangeEvidenceWhat's known
Console on EthernetVerified, now measuredOne tester logged 0 of 29 runs on Wi-Fi and 5 of 29 wired, with nothing else changed. Wired isn't a guarantee: another user failed 15 times. The fork doesn't fix Wi-Fi, and crueter's rare Wi-Fi success is Unverified.
kurumuz's forkVerified for (B) consoles and 3/4; Disputed for 2/4See Prepare your console › Choose your build.
SmileBASIC in system memoryVerifiedRepeated "pinning cost changed" failures stopped once it was moved off the microSD; a second user found the same cause.
Room in SmileBASIC's saveVerifiedA full save can make 2/4 fail within seconds. Raise the save size in SmileBASIC's settings before erasing anything; deleting the save erases NS2.
A macOS or Linux hostVerifiedWSL also works once set up (Windows and WSL). A Mac isn't clearly better than Linux.
DockedUnverifiedProbably just the way to get Ethernet; mac2jb's maintainer saw no difference.
One user profileDisputed; the no-effect side is now strongerkurumuz passed 2/4 after removing extra profiles but doubts that was the cause. Others see no difference from the profile count or which account launches SmileBASIC.
Longer host timeoutsDisputedOne user got past 3/4 this way, but kurumuz says most failures aren't timeouts. The fork already waits longer, so its 2/4 runs longer.

The console needs a local network path to the computer, not internet, and the cable needn't go to the PC.

crueter has offered reliability changes to the fork, and kurumuz merged an update on 25 Oct, so use its latest commit. Their earlier host-side patches, posted only in a Discord research thread, are meant to go with the fork.

One tester found those patches more reliable; crueter's own 80%+ figure is Unverified. Treat them, like any Discord-only file, as untested (Links and tools › Reliability patches).

One user's first verified setup (Unverified: one user's report). In an AI-assisted write-up, they list the setup that first got them to 4/4. The same settings had failed the attempt just before, so they don't claim any single setting made the difference.

  • kurumuz's fork at commit 7867de3, with the fork's original timings. They added a logging patch of their own, which they say changed only error reporting.
  • The Switch wired directly to a Mac, using macOS Internet Sharing.
  • A full restart, then 15 seconds idle in Direct mode.
  • 120 ms per keystroke.
  • 3-second waits after LOAD, the confirmation and RUN, and 6 seconds after REMOVE.
  • About 176 MiB free in SmileBASIC's save.

A second AI-assisted setup (Unverified: one user's report). Another user with repeat 4/4s runs pepsipu's code inside a heavily modified harness, with verbose logging and tools that let the AI model inspect the run. Nobody else has reproduced it. Keep any AI tool off the console itself (Retry routine).

Start the host#

The host is ns2jb's run.cjs, and the common steps are the same everywhere:

  1. Install Node.js 22 or newer.
  2. In the extracted ns2jb folder, run node run.cjs.
  3. When asked, pick the computer's LAN IP on the console's network. Picking another of its addresses gave one user BOOT FAILED 58.
  4. Allow TCP 39380 through any firewall.

The README supports macOS and Linux only. Each OS below uses the same template and lists only what differs.

macOS#

Support: official in the ns2jb README.

Setup: the mac2jb app bundles its own Node and host. If macOS asks, allow incoming connections (mac2jb GUI guide); if you dismissed the prompt, check System Settings → Network → Firewall. A direct cable also works: one user wired the Switch straight to a Mac using macOS Internet Sharing (Best odds).

Known issues: a Mac isn't reliably better. One user failed 30+ times on two Macs, then succeeded on Linux. An M3 and an M4 Pro MacBook on Ethernet still stalled.

Evidence: Verified. Users report 4/4 on an M4 Mac mini and on a wired Mac with the fork.

Linux#

Support: official in the ns2jb README.

Setup: nothing beyond the common steps. For a direct cable to the dock, use NetworkManager's internet sharing.

Known issues: none specific to Linux.

Evidence: Verified. Several users report 4/4 on Linux, including one who failed 30+ times on Macs first and one on a direct-cable laptop.

Windows and WSL#

Support: not supported by the README. WSL works once its networking is set up; native Windows doesn't yet. A Linux Live USB is the fallback.

Setup for WSL:

  1. Turn on WSL's mirrored networking mode, so the host uses your PC's own IP. Binding to the WSL address also works.
  2. Add Hyper-V firewall rules that let the console reach the host on TCP 39380.
  3. Set the Windows network to Private, then run the host inside WSL as on Linux.

Known issues:

Evidence: WSL is Verified: several users reached 4/4 with mirrored networking and firewall rules, including one on the first try and one tester's 29-run log. Some still fail, so it's less proven than native Linux. Native Windows is Disputed, and the failure side is stronger: the public fork fails as above.

SteamOS#

Support: not listed in the README, but SteamOS is Linux.

Setup: SteamOS runs firewalld by default. One helper suggests stopping it temporarily to test, with sudo systemctl stop firewalld, then starting it again afterwards (advice, untested). With a direct cable to the Deck, a helper says you might need connection sharing (advice, untested; Bek's SteamOS 4/4 used the router). Pick the Deck's address on that link.

Known issues: one user's SteamOS host never connected. Picking the Deck's Wi-Fi address for a cabled console gave another user BOOT FAILED 58.

Evidence: Unverified. Bek reports a SteamOS 4/4, with the console wired to the router and the Deck on Wi-Fi.

Live USB#

Support: a live USB runs Linux, so Linux's support applies. Helpers suggest it as the fallback for Windows users.

Setup:

  1. Put a Linux image on a USB stick, for example with Ventoy, and boot its "try" mode.
  2. Install Node.js in the live session, then follow the common steps.
  3. Reboot into your usual system afterwards; nothing on it changes.

Known issues: none beyond Linux's.

Evidence: Unverified as its own route, though Linux is Verified. One user went from WSL failures to 4/4 on a live USB.

Step by step#

Do this every session, and again after every failure.

  1. Fully power off the console, then start it (Retry routine).
  2. Open SmileBASIC and enter Direct mode: hold minus or press F8.
  3. On the computer, start the host (Start the host). Choose the computer's LAN IP, not an address set on the console.
  4. In Direct mode, enter each line on its own, and confirm the load:
    LOAD "TXT:NS2"
    RUN
    REMOVE NSR,&H60000000,&H3FFFFFFF

    "Out of memory" after REMOVE is expected. The README uses LOAD "TXT:NS2". LOAD "NS2" is said to load the same way, and one user's run with it connected and reached 2/4 (Unverified: one run).

  5. Type the V=START(...) line the host prints. With kurumuz's fork it holds only the port and the computer's IP, so it stays the same between runs; upstream's numbers change every run. Typing speed doesn't matter, though the host times out eventually (fork README).
  6. Keep both running until the host prints FS execution verified, or stops.
  7. Restart the console when you're done. ns2jb is tethered, so a restart undoes everything. Starting the fork's host as node run.cjs --rpc keeps the connection open after 4/4 instead, for tools such as OunceCake (Backing up your own games › Running OunceCake).

Reading the stages#

The host prints four stages, and only the host shows success: nothing changes on the console.

StageWhat it doesWhat to expect
1/4Checks the consoleReliable: kurumuz calls the game-side step "100% reliable".
2/4Acquires FS memoryThe usual stall. It's timing-sensitive and not fully understood.
3/4Starts the native helperFails often, especially on (B) consoles with upstream.
4/4Runs the FS demoPrints "FS execution verified", then cleans up.

"RPC working" isn't success; only 4/4 is. A run's length doesn't show it either: successful runs take 5–6 minutes, but failures can last minutes too.

If the console freezes at 2/4 or 3/4, hold the power button until the screen is fully off; it doesn't brick. Troubleshooting › The run's stages covers the messages at each stage.

If your goal is HBLauncher, it skips the FS stages entirely (After 4/4).

Retry routine#

Every attempt needs a clean start.

  1. Fully power off the console: hold the power button and use the power options. Closing SmileBASIC isn't enough.
  2. Keep the runs folder, and enter REMOVE only once per boot.
  3. Start over from Step by step, with the new V=START(...) line.
  4. Don't touch files first. After a failure, reboot before you restore, delete or manage the save. The first confirmed brick followed a save restore with no reboot.
  5. Don't edit the exploit. Don't change the host code or its expected values, or let an AI "fix" it. A helper warns against changing it in any way.
  6. Keep AI tools and unattended rigs off the console. An AI tool working the console on its own is how one of the two confirmed bricks happened. Nothing should write to the console's storage; see Start here › Risks in brief.

One user's checklist (Unverified: one user's report). The same write-up adds these points:

  • Match the complete build: take the bootstrap and host files from one fork, not a mix.
  • Keep over 20 MiB free inside SmileBASIC's save; console and microSD space don't count.
  • After a failure, restart fully and use a fresh V=START(...) line. Never enter REMOVE twice in one session.
  • Run only one host, and keep the computer awake.
  • Record the first specific error before changing timing, because a later timeout can hide it.
  • Leave the run's validation checks on; they tell an unreliable state from real success.

They add that no single change was a universal fix, so change one thing at a time.

Restarting between attempts is Disputed. kurumuz says to restart only if the console hangs, and otherwise just restart SmileBASIC. The README and the fork's own error text, "restart the console before another launch", say restart every time, and that side is stronger.

Expect many attempts: reported tries range from about 8 for a first 4/4 to about 350 and counting. The clearest measurement is 5 of 29 wired runs, about 17%; kurumuz puts their own odds at about 30%.

Other per-try claims range from 0% to 85%, but they're self-reports from different setups and aren't comparable. ns2jb's issue #1 documents odds of about 20%, and luck varies by day.

After 4/4#

Nothing is installed, and a restart returns the console to stock. These optional apps all run as GPU-shader programs inside SmileBASIC, not native code, and use the same bootstrap.

If your goal is HBLauncher, you don't need 4/4 (Verified). HBLauncher skips the FS stage, so it starts almost every time, even where full runs stall. In exchange, it gets no file access.

AppVersionWhat it doesNotes
HBLauncherv0.2.0Launches shader apps and returns to a menuThe official setup needs a Pico 2 W and a Linux host. The Pico stores your Wi-Fi password and a pairing key, so don't share settings.toml.
ftpd-sbv0.1.0FTP access to SmileBASIC's own RomFS, save and temp foldersNeeds HBLauncher 0.2.0+ and a PC FTP client. It can't reach other games. Writes and deletes hit real files, NS2 included.
Celeste-Classic-NS20.3.3A Celeste Classic portAnother user confirms it works. It can't return to the launcher; quit SmileBASIC to leave.
HelloWorldS2First commit 23 OctA Hello World host for Windows or macOS, with no PicoUnverified.

Whether HBLauncher counts as real homebrew is Disputed. The stronger side: it's a real launcher for shader apps, with no privileged access and no native code. Its author says real homebrew is "a ways off".

A no-Pico HBLauncher package shared only on Discord failed on one Mac. Treat it, and any Discord-only package, patch or tarball, as an untested file; prefer GitHub or GitLab releases. That includes input-noop.patch, which removes the Pico, and an HBLauncher video player (Links and tools › Known fakes and untested files).

App errors are in Troubleshooting › After 4/4, and every app's link is in Links and tools › After 4/4: homebrew and research tools. For what research may unlock next, see Where the project stands.

Troubleshooting

Find what's on your screen in the index, then use the fix in its section. Most failures are a typo, a blocked connection, or a stall at 2/4, the step where most runs fail.

Each section is a table: You see · Why · Fix · Evidence. Verified means documented, or two or more independent reports. Unverified means one report, Disputed means credible evidence on both sides, Unknown means no answer yet, and Refuted means shown false.

Symptom index#

  • Console prep: the eShop still loads with 90DNS set; "This feature is not available" in the eShop or browser; "Content not available" after removing 90DNS; "No importable data" or "not compatible" from a card; photos copy but no update prompt.
  • The app: BOOT FAILED 14; a network warning when SmileBASIC starts; SmileBASIC hangs, won't open, or sticks on "preparing software".
  • Typing: BOOT FAILED with any other number; Syntax error, NEXT without FOR or an error ending in 0:NN; Syntax error then OK after each line; wrong symbols, such as £ for #; wrong case, or a save menu that says Load; a typer that drops characters, or one the Switch 2 ignores.
  • The host: BOOT FAILED 58; a host stuck on "Waiting"; runs that fail on Windows or WSL; EADDRINUSE.
  • The run's stages: Out of memory or Type mismatch after REMOVE; Wrong number of arguments; RPC STOP 0 or RPC STOP 32768; a stall at 2/4 or 3/4; 2/4 failing within seconds; "Pinning allocation cost changed"; EEXIST or "Save mount was not inspected"; "Insufficient tmp space" or "Insufficient save space"; a frozen console.
  • After 4/4: nothing happens on the console; everything is gone after a reboot; "No apps in launcher catalog" or spawn python3 ENOENT; "Required input import unresolved"; "Native function mapping or instructions differ"; FTP shows only a few folders, or NS2 changed.

Console prep#

Prep problems come from 90DNS not taking effect, or from a microSD card that won't trigger the update. The full steps are in Prepare your console.

You seeWhyFixEvidence
The eShop still loads with 90DNS setThe console hasn't restarted, a saved network lacks the setting, or your provider's router overrides itRestart from the power menu. Set 90DNS on every saved network, wired included. If your router pushes automatic DNS, turn that off. Still loading? Delete every saved network and set each up by hand, or host 90DNS yourselfVerified: a restart fixed it for one user. Two users traced it to their provider, one by testing on a phone hotspot. Only error 2811-1007 confirms the block
"This feature is not available" in the eShop or browser, with 90DNS onThe supernag: web applets lock on consoles that haven't reached Nintendo for a while. It isn't a ban, and it doesn't affect the full SmileBASICNothing to fix for the SmileBASIC route. Clearing it means going online, so read Prepare your console › The supernag first. Don't factory-reset to clear itVerified: several users saw it, and acron got it on 23.0.1. Without the nag, the eShop shows error 2811-1007 instead
"Content not available", or no connection, after removing 90DNSThe 90DNS setting stays active until a restart. It's the 90DNS code, not a banRestart the consoleVerified: one user restarts each time, and Hexa found DNS changes apply only after a reboot
"No importable data" or "not compatible" from a cardThe card is FAT32, or went in before the console asked. A Switch 1 formats cards of 32 GB or less as FAT32Format it as exFAT on a computer; this erases it. Start Data Management → Manage Screenshots and Videos → Import first, and insert the card only when askedVerified: the setup guide's microSD page and first-hand fixes, such as a FAT32 card that worked once reformatted
Photos copy from a card, but no update promptThe update may already be installed. Otherwise import works without it, so the console just copies. Some cards never trigger it, and nobody knows whyCheck item 3 in Support/Health & Safety: (B) means you already have it. If it shows (A), try a freshly formatted exFAT card. Re-seating the card also worked onceVerified: a fresh card worked, and kurumuz confirms (B). Unverified: re-seating. Unknown: cards that never trigger it

Copied photos don't prove you have the update. To check, see Prepare your console › microSD and your layout.

The app#

App problems mean the wrong version, or SmileBASIC data damaged by a failed run.

You seeWhyFixEvidence
BOOT FAILED 14You're on the free demo (4.4.6), which fails the first check every timeUse the full game, 4.4.9. The demo isn't supportedVerified: fuyuka, who maintains the setup guide, says it doesn't work on the demo. Two researchers say it lacks storage the run needs
A network warning when SmileBASIC starts (error 2155-8007)90DNS is blocking Nintendo's serversPress OK and carry onVerified: one user explains it, and another ran the softmod with it
SmileBASIC hangs or won't open after a failed run, or sticks on "preparing software"The app or its save is corrupted. It's uncommon: a researcher warns repeated runs can corrupt the save, but kurumuz saw none in about 1000 restartsGo in order. First reboot, which fixed one user's launch failure. Next, delete SmileBASIC's save; this erases NS2. Last, delete the app and re-download your own purchase, which needs 90DNS off. You don't need a factory resetVerified: deleting the save fixed it for two users, and reinstalling fixed it for two others. Unknown: re-downloading once newer firmware ships, since the eShop needs the latest firmware. Unverified: kurumuz says an updated fork shouldn't cause the loop, and one user's SmileBASIC permanently lost network connections, with no fix found

Typing#

Errors in this phase are almost always typos, and a correct script prints BOOT OK.

You seeWhyFixEvidence
BOOT FAILED N (any N but 14 or 58)N is a fail code, not a line number. It usually means a typoSearch the script for fail(N) and check the lines near it. Check letters against digits: one user's BOOT FAILED 10 came from a zero typed for the letter O. Then retype carefullyVerified: fixing typos cleared it. Unknown: what each code (8, 11, 39, 41) means on its own
Syntax error, NEXT without FOR, or an error ending in 0:NNA typo. 0 is the save slot, and NN is the lineCheck line NN and the lines it uses. The typo can sit elsewhere: one user's error at line 179 came from missing parentheses on line 64. Then work through Type the bootstrap › Check your typingVerified
Syntax error then OK after each lineYou're typing into Direct modePress X and choose "edit 0", then type it in the editor. Run it from Direct modeVerified: type in the editor. Hexa gives the same fix, and that user then got it working
Wrong symbols: £ for # or $, or other swapsThe console's keyboard layout isn't English (US)Set HOME → System Settings → Controllers & Accessories → USB Keyboard → English (US). Then restart SmileBASIC, and recheck after any console resetVerified: changing the setting fixed it for several users
Wrong case throughout, or the save menu says LoadSmileBASIC's "CapsLock on USB Keyboard" setting is on, which is the defaultTurn the setting off, or press CapsLock until the cursor shows a capital A. Don't retype it all in capitals: case must match the originalVerified: the setting; Load means CapsLock
A typer drops characters or line breaksIt's typing too fast, especially at line endsSlow it down: 50 ms per character and 100 ms per line workedVerified: kurumuz says slow down at newlines, and a Steam Deck typer skipped keys at 60 ms per key
A typer works on a PC, but the Switch 2 ignores itThe device reports as more than a keyboard, such as a CircuitPython board that also shows up as a driveUse a typer that reports only as a keyboard. On CircuitPython, enable only the keyboard in boot.py. One user found Bluetooth keyboards aren't supportedVerified: one user's composite device, and an RP2350 board that typed once set keyboard-only

The host#

Host problems are almost always the network: the console can't reach your computer.

You seeWhyFixEvidence
BOOT FAILED 58, or the host stays on "Waiting"The console can't reach the computer, usually because of a firewall or the wrong IPPut both on the same network. At the host prompt, pick the computer's address on the network the console uses, and don't set a manual IP on the console. Allow port 39380 through the firewall, and set a Windows network to Private. SteamOS runs firewalld: stop it briefly to test, then turn it back onVerified: firewall and Public network fixed it, and a firewall caused it for another user. One user picked their Wi-Fi address while cabled to the computer
Runs fail on Windows or WSLNative Windows: the host's temp-folder handling breaks, so 2/4 fails with a mkdtemp '/tmp/ns2-XXXXXX' error. WSL: the console can't reach the host until its networking is set upOn WSL, turn on mirrored networking and add the Hyper-V firewall rules. Native Windows has no public fix, so use WSL, macOS, Linux or a Linux live USBDisputed: WSL reached 4/4 for several users once set up, the stronger side, though some still get errors. The README supports only macOS and Linux
EADDRINUSEThe host's port is already taken, often by another copy of the host still runningClose the other host. Restarting the computer fixed it for one userUnverified: one report

Setup for each OS, WSL included, is in Run it › Start the host.

The run's stages#

Stage 2 is where most runs fail. Before the next try, fully restart the console, as the README and the fork's error text advise; Run it › Retry routine covers the dispute. What each stage means is in Run it › Reading the stages.

You seeWhyFixEvidence
Out of memory after REMOVEIt's expectedCarry on: type the V=START(...) line the host printedVerified: the README
Type mismatch instead of Out of memoryProbably a wrong bootstrapCompare your script with the original, or retype itUnverified: one helper's answer
Wrong number of arguments at V=START(...)Your NS2 was typed from the original release, and kurumuz's fork prints a shorter START lineDon't retype the bootstrap. Type the host's second START line, the one ending ,0,0,0,0, without repeating RUN or REMOVE. See Type the bootstrap. On mac2jb, retype it instead (Type the bootstrap › Mac (mac2jb))Verified: the fork's README, and crueter
RPC STOP 0, and nothing on the hostA typo in the V=START(...) line. On the original release, its numbers are random each runRetype the whole line carefully and rerun. Typing speed doesn't matterVerified: two users traced it to typos
RPC STOP 32768The connection closed, which also happens on successful runsCheck the host's output for the real resultUnverified: one helper's answer
A stall at 2/4 ("Acquiring FS memory", "The run stopped")Stage 2 is timing-sensitive, and kurumuz says its reliability depends on unknown factors. Wi-Fi makes it far worseWire the console: one tester logged 0 of 29 runs on Wi-Fi and 5 of 29 wired. Check that SmileBASIC is in system memory, not on the microSD card. Then fully restart and retry; see Run it › Best oddsVerified: the most common failure. Moving SmileBASIC to system memory got one user to 4/4 and fixed another's runs. Luck also varies by day
2/4 fails within seconds, "Insufficient save space", or "Pinning storage was not created"SmileBASIC's save is full: it needs more than 20 MiB free. The run's acquisition.log, in runs/<run>/switch2/, shows itRaise the save size in SmileBASIC's settings. Erasing the save is the last resort, because it deletes NS2Verified: fast failures from a full save, fixed by raising the size. Unverified: one user's pinning-storage error came with a 619 MB save
"Pinning allocation cost changed (14992 vs 13616)" at 2/4SmileBASIC is installed on the microSD card, not in system memoryMove SmileBASIC to system memory, then restart and retryVerified: moving it cleared one user's repeated failures, and another found the same cause
EEXIST or "Save mount was not inspected" at 2/4UnknownNo fix is known; restart and retryUnknown: EEXIST report; save-mount report
A stall at 3/4, or "Insufficient tmp space"Your console has the microSD-update layout, which the original release can't handleUse kurumuz's fork. Keep your NS2, and type the ,0,0,0,0 START line if asked. The fork also cleans up temporary files betterVerified: the fork's README and a first-try 4/4. It can still fail at 3/4. kurumuz confirms it works with or without the update. One user's 3/4 stall freezes the game, not the console (Unverified)
The console freezes at 2/4 or 3/4The run failedHold the power button until the screen is fully off, then start overVerified: a freeze doesn't brick it, and neither does a hard power-off

Your console's layout and which build to use are in Prepare your console › microSD and your layout and Prepare your console › Choose your build.

After 4/4#

A finished run shows only on the computer, and it lasts until you reboot.

You seeWhyFixEvidence
Nothing happens on the console after 4/4That's success. The host prints "FS execution verified"Nothing to fix; it's a proof of conceptVerified: the README; a user confirms
Everything is gone after a rebootNothing persists. Claims of an "untethered" build cover leaving the app, not a reboot: see Where the project stands › PersistenceRun the whole process againVerified
"No apps in launcher catalog" in HBLauncher, or spawn python3 ENOENTOn Windows, the host is missing the Vulkan SDK's validator, Python or PillowInstall the Vulkan SDK; core components are enough. Put spirv-val.exe from its Bin folder on your PATH. Then install Python on your PATH, plus its Pillow libraryVerified: two users confirmed the Vulkan fix, and two helpers list Python and Pillow
"Required input import unresolved", or the input check fails, in HBLauncherThe launcher's controller lookup used a placeholder instead of the real controller functionJMY reports correcting that lookup in the launcher files, with verification left on. Don't turn verification offUnverified (one user's report): JMY's AI-assisted write-up. The error itself hit at least two users
"Native function mapping or instructions differ"UnknownPower-cycle the console and try againUnverified: one helper's advice
FTP shows only a few folders, or NS2 changedftpd-sb reaches only SmileBASIC's own folders, and its writes change the real filesNothing to fix for the folders. Retype NS2 if a write wiped itVerified: the ftpd-sb README

More on what to do next is in Run it › After 4/4. Problems while backing up your own games, such as short files or a frozen console, are in Backing up your own games › Fixing common problems.

Things that make it worse#

These moves are tempting after a failure, but each one adds risk without fixing the cause.

Still stuck?#

Ask in the community's support channel, and include the details below. Most answers depend on them.

First, find which stage fails before you change any timing settings. JMY's write-up calls this the most useful rule (Unverified, one user's report).

  • Your firmware version and SmileBASIC version, and whether SmileBASIC is in system memory.
  • Your build: the original release or kurumuz's fork.
  • Your microSD state: item 3 in Support/Health & Safety shows (A) or (B).
  • Your host OS, and how each device connects: Ethernet or Wi-Fi.
  • Your typing method.
  • The exact message and the stage it stopped at, with a photo of the console and the host's output.
  • What the run's acquisition.log says; it's in the run's switch2 folder.
  • How many attempts you've made, and whether you fully restarted between them.

Redact your pairing values before you post. If you use HBLauncher's Pico, never share its pairing key or settings.toml, which holds your Wi-Fi password. On the original release, blur the random numbers in your V=START(...) line too.

FAQ

Short answers to the questions people ask most, each with its evidence label and a link to the full story. Seeing an error message? Go straight to Troubleshooting.

Labels: Verified (documented, or two or more independent reports), Unverified (one report), Disputed (credible evidence on both sides), Refuted (shown false) and Unknown (no answer yet).

Most asked#

  1. Is it worth doing now, and can I mod games?
  2. Do I need a microSD card?
  3. Does the free demo work?
  4. Which firmware works, and is there anything newer?
  5. What can type the bootstrap for me?
  6. Can I use Windows, WSL or a VM as the host?
  7. Does Ethernet help?
  8. Will running it get me banned?

Topics#

Getting started#

What is ns2jb?#

Verified. It's pepsipu's tethered softmod for the Switch 2, public since 22 Oct.

  • You type a BASIC program into SmileBASIC 4, and a host program on your computer runs four stages.
  • It runs native code as a system module and as the filesystem service.
  • It isn't CFW, and nothing survives a reboot.

More: Start here

What do I need?#

Verified. The full SmileBASIC 4 (4.4.9), firmware 23.0.1, a computer, and a keyboard or a device that types for you.

More: Get it running › Requirements

Is it worth doing now, and can I mod games?#

Verified. Mostly for research: staff and helpers say it's too early for casual users.

More: Start here › Is this for you?

Does it work on a Japan-only console?#

Verified. Not so far: two users failed on Japan-only consoles, even with the full SmileBASIC 4.

  • kurumuz hasn't tested one and thinks its firmware may differ.
  • The cause is Unknown, and no fix exists yet.

More: Where the project stands › Other entry points

The app#

Which SmileBASIC do I need, and can I still get it?#

Verified. The full SmileBASIC 4, version 4.4.9, and any region's copy works.

More: Get it running › Requirements

Does the free demo work?#

Refuted. fuyuka, who maintains the setup guide, says it doesn't work on the demo.

More: Where the project stands › The demo (4.4.6)

SmileBASIC wants to update. Can I keep 4.4.9?#

Unverified. Probably: kurumuz believes you can start the game without updating.

  • Decline the prompt, because ns2jb needs 4.4.9.

More: Prepare your console › Check your versions

Firmware and updates#

Which firmware works, and is there anything newer?#

Verified. Exactly 23.0.1, the only verified version.

More: Prepare your console › Check your versions

I'm on older firmware. Should I update?#

Disputed. ns2jb needs 23.0.1, but an update can't be undone.

More: Prepare your console › Check your versions

How do I stop updates?#

Verified. Turn off automatic updates, then set 90DNS in the console's own Internet settings.

More: Prepare your console › Stop updates with 90DNS

Is turning off auto-update enough?#

Disputed; 90DNS is the safer side. Some say auto-update off is enough, but one accidental tap on an update prompt is permanent.

More: Prepare your console › Stop updates with 90DNS

Will a game or cartridge force an update?#

Unverified. Per one helper, a game that needs newer firmware won't run until you update.

More: Prepare your console › Check your versions

What is the supernag, and should I clear it?#

Verified. The eShop and browser show "This feature is not available" once a console hasn't reached Nintendo lately.

More: Prepare your console › The supernag

The microSD card#

Do I need a microSD card?#

Verified. No: ns2jb doesn't use one.

  • You type the bootstrap in, so nothing loads from a card.
  • A card matters because of the one-time update it triggers, which kurumuz says future homebrew will need.

More: Prepare your console › microSD and your layout

What is the "microSD update"?#

Verified. It's a one-time download the console needs before the card slot works at all.

  • It also installs the newest firmware, even if you're already on it.
  • It happens once per console and can't be undone, per the setup guide.
  • While 23.0.1 is the newest version, you stay on it.
  • If you'll use a microSD Express card, insert it while 23.0.1 is the newest firmware. Whether this update covers Express is Unverified.

More: Prepare your console › microSD and your layout

I've used a microSD card in this console. What now?#

Verified. It has probably taken the update, which the original release can't handle, so use kurumuz's fork.

More: Prepare your console › microSD and your layout

Should I take the microSD update now?#

Disputed; taking it is now the stronger side on 23.0.1. On 25 Oct kurumuz urged taking it, or you won't have homebrew when it arrives.

More: Prepare your console › If you want to use a card

How do I trigger the update with a regular card?#

Verified. Format the card as exFAT, then start the import before you insert it.

More: Troubleshooting › Console prep

Typing the bootstrap#

Error while typing? See Troubleshooting › Typing.

What do I type, and where?#

Verified. The contents of bootstrap.bas, from the first VAR line; the file name alone does nothing.

More: Type the bootstrap › What you're typing

How do I save it and run it again later?#

Verified. Save it as NS2 in slot 0 with Ctrl+S or Simple Save, and the full game keeps it.

More: Run it › Step by step

How long does hand typing take?#

Verified. The bootstrap is about 225 to 229 lines, roughly 7,800 characters.

More: Type the bootstrap › Hand typing

What can type the bootstrap for me?#

Verified. Anything that acts as a wired USB keyboard. A helper says it must report only as a keyboard; that fixed one board (Unverified). You need it only for the first typing.

More: Type the bootstrap › Choose a method

Can my phone or computer type it?#

Verified. A rooted Android phone or an Apple Silicon Mac can, but Windows can't do it in software.

More: Type the bootstrap › Choose a method

The host computer#

Host error such as BOOT FAILED 58? See Troubleshooting › The host.

Can I use Windows, WSL or a VM as the host?#

Disputed; WSL works once set up, and native Windows mostly fails. The README supports only macOS and Linux.

More: Run it › Windows and WSL

Verified. No: it needs only a shared local network, even a router with the modem unplugged.

More: Run it › Start the host

Odds and retries#

Why does it keep stopping at 2/4?#

Verified. Stage 2 is the filesystem step: it's timing-sensitive, and it's where most runs fail.

More: Run it › Reading the stages

What's the success rate?#

Disputed; low either way. Every figure is a self-report, and issue #1 documents about 20%.

More: Run it › Best odds

Does Ethernet help?#

Verified. Yes, and it's now measured: one tester logged 0 of 29 runs on Wi-Fi and 5 of 29 wired.

More: Run it › Best odds

Do user profiles or internal storage matter?#

Verified. Profiles don't, but where SmileBASIC is installed does.

More: Run it › Best odds

Do I restart between attempts?#

Disputed; the README side is stronger. Yes: keep the runs folder, fully restart, and enter REMOVE once per launch.

More: Run it › Retry routine

Which build or patches should I use?#

Verified. Use kurumuz's fork, which the setup guide recommends and kurumuz still backs.

More: Prepare your console › Choose your build

What does success look like?#

Verified. Nothing shows on the console; the host prints "FS execution verified".

More: Run it › After 4/4

After 4/4#

How do I browse the console's files?#

Verified. Install ftpd-sb in HBLauncher, then connect with any FTP client over Wi-Fi.

More: Run it › After 4/4

Is HBLauncher real homebrew?#

Disputed; "real but very limited" is the stronger side. It runs real apps, but they're GPU shaders inside SmileBASIC, not native code.

More: Run it › After 4/4

Does HBLauncher need a Pico 2 W?#

Verified. The official setup uses one, plus a Linux host.

More: Run it › After 4/4

Do I need a 4/4 run to use HBLauncher?#

Verified. No: HBLauncher skips the filesystem stage, so it starts almost every time.

  • The trade-off: it gets no file access beyond SmileBASIC's own.
  • It still needs the full SmileBASIC 4, the same bootstrap and a working connection to the host.

More: Run it › After 4/4

Can it run emulators or real apps?#

Unknown. Native code is possible, but no app or toolchain uses it yet.

More: Where the project stands › Native homebrew

Risk and bans#

Will running it get me banned?#

Unknown. No bans had been reported as of 25 Oct, but the risk is unknown, not zero.

More: Start here › Risks in brief

If I'm banned, what do I lose?#

Verified. A ban hits the whole console, not your account or family, unless you cheat online or tamper with the account.

More: Start here › Risks in brief

Does staying offline avoid a ban?#

Disputed; the cautious side is stronger. Staying offline is the usual advice, but it may only delay things.

More: Prepare your console › Stop updates with 90DNS

Has anyone bricked a console?#

Verified. Two confirmed bricks, plus one softbrick that was recovered. Both bricks involved extra steps.

More: Start here › Risks in brief

Which tools are fake or risky?#

Refuted. The "NX2 CFW ACTIVATOR" isn't real: it's fake and likely malware.

More: Links and tools › Known fakes and untested files

Where the project is going#

Is it CFW or a kernel exploit?#

Verified. No: it runs code in one system module and the filesystem service, without kernel access.

  • Some say it "does most of what CFW would". The side pointing to its limits, tethered with no persistence, is stronger.

More: Where the project stands › What it can reach

What can it reach?#

Verified. ns2jb's filesystem stage gets privileged access beyond SmileBASIC's container.

More: Where the project stands › What it can reach

Will it become untethered or run native homebrew?#

Unverified. Not yet: it's still tethered, and every "untethered" claim is unshown.

More: Where the project stands › Persistence

Is there another way in besides SmileBASIC?#

Unknown. None is public as of 26 Oct.

More: Where the project stands › Other entry points

Does it work on a Switch 1?#

Disputed; the hands-on result is stronger. The first stage reproduced on a Switch 1, but the filesystem step didn't work as-is.

More: Where the project stands › Other entry points

Backing up your games#

Can I back up the games I own?#

Verified. Yes: Hexa's OunceCake, public since 25 Oct, dumps the unencrypted RomFS and ExeFS of games you own.

More: Backing up your own games

Can I play or emulate the games I back up?#

Verified. No: dumps can't be reinstalled or run on the console.

More: Backing up your own games

What have people found in game files?#

Verified. Mostly codenames and file layouts so far.

More: Datamining

The community#

Where are new findings posted?#

Verified. In the research threads, such as "Improving ns2jb reliability" and the microSD firmware fix.

More: Links and tools

Myths and facts#

Each myth below has been shown false or replaced by newer facts.

MythFactMore
"My photos copied, so I have the microSD update."Import works without the update. Check item 3 for (B).Prepare your console › microSD and your layout
"You need the microSD update to run it."kurumuz's fork works with or without it.Prepare your console › microSD and your layout
"Older firmware works too."Only 23.0.1 is verified.Prepare your console › Check your versions
"Stay on low firmware, and activate the microSD slot now."You can't do both: the slot update installs the newest firmware.Prepare your console › microSD and your layout
"Consoles above 20.1.1 don't need the slot update."The first card forces it on any firmware.Prepare your console › microSD and your layout
"Only microSD Express cards trigger the update."A regular exFAT card works through Import.Prepare your console › microSD and your layout
"The import needs a Switch 1 screenshot on the card."A blank exFAT card triggers it.Prepare your console › microSD and your layout
"An update prompt on 23.0.1 means new firmware."It's the slot update. Nothing newer existed at about 11:55 UTC on 26 Oct.Prepare your console › Check your versions
"Going online won't update unless you start it."That holds only while 23.0.1 is the newest firmware. After that, an online console learns of newer firmware and locks its browser until you update.Prepare your console › Stop updates with 90DNS
"A factory reset clears the supernag."It doesn't, and one reset erased the inserted card.Prepare your console › The supernag
"The supernag forces an update."It doesn't; it locks the browser and eShop.Prepare your console › The supernag
"Blocking Nintendo at the router, or a no-internet network, prevents the supernag."A console in airplane mode was nagged twice, and a never-online one was nagged on its first 90DNS connection.Prepare your console › The supernag
"Airplane mode with Wi-Fi on is outbound-only."The poster retracted it. With Wi-Fi on, the console is online.Prepare your console › Stop updates with 90DNS
"You need a microSD card for the softmod."You type the bootstrap in; no card is needed.Type the bootstrap › What you're typing
"You need the Japanese copy."Any region's 4.4.9 works.Get it running › Requirements
"The demo works, just more slowly."It stops at stage 2, and the guide's maintainer says it doesn't work.Troubleshooting › The app
"SmileBASIC isn't needed."ns2jb needs it today.Get it running › Requirements
"Hand typing is pointless."You type it once, save it and reload it.Type the bootstrap › Hand typing
"Type it all in capitals."Case must match the original, so helpers advise against it (untested).Type the bootstrap › Check your typing
"Any ESP32 can type it."Only the S2 and S3 can.Type the bootstrap › ESP32-S2/S3
"Android phones can't type it."Rooted, keyboard-only setups work.Type the bootstrap › Rooted Android
"SmileBASIC uses a UK layout."The console's USB Keyboard setting decides the layout.Troubleshooting › Typing
"WSL can't be the host."Several users reached 4/4 with mirrored networking and firewall rules.Run it › Windows and WSL
"The Ethernet cable must go to the computer."The console wired to the router, with the computer on Wi-Fi, works.Run it › Best odds
"90DNS causes 2/4 stalls."It doesn't interfere, and runs pass 2/4 with it on.Troubleshooting › Things that make it worse
"DNS doesn't matter during the run."An online console still reaches Nintendo, so keep blocking it on every connection.Prepare your console › Stop updates with 90DNS
"Typing the START line faster helps."Speed doesn't matter.Troubleshooting › The run's stages
"Nobody has reached 4/4."That was early; many have since.Where the project stands
"It's locked inside SmileBASIC's files."ns2jb isn't; HBLauncher apps are.Where the project stands › What it can reach
"It's untethered now."kurumuz's build survives leaving the app, and ns2jb must be redone after every reboot.Where the project stands › Persistence
"Gezine has an untethered exploit."They said only that untethered might be possible.Where the project stands › Persistence
"There's zero ban risk."No bans are reported, but nobody knows the risk.Start here › Risks in brief
"One file write can't brick it; just restore the file."If you mess up, there's no way to unbrick it.Start here › Risks in brief
"Game dumps are encrypted packages."OunceCake outputs loose, unencrypted RomFS and ExeFS.Backing up your own games
"The NX2 CFW ACTIVATOR gives one-click CFW."It's fake and likely malware.Links and tools › Known fakes and untested files
"The ounce-core emulator runs Switch 2 games."It's an AI-generated fake.Links and tools › Known fakes and untested files
"The ducky payload repo is an IP grabber."It only types a program listing; the remark was likely a joke.Links and tools › Known fakes and untested files

Where the project stands

ns2jb works, but not reliably: the game-side step always runs, while the filesystem step often fails, and nothing survives a reboot.

Works, doesn't yet, in progress#

Works

Doesn't work yet

  • Reliable runs. Self-reported success runs from 0% to about 85%, and the figures aren't comparable.
  • Anything that survives a reboot.
  • Native homebrew, custom firmware or kernel access.
  • The free demo (4.4.6).
  • Playing, emulating or reinstalling games you back up: dumped games can't run.
  • Emulation, which staff say is far off.

In progress

  • Reliability patches and forks, from kurumuz and crueter.
  • Running code as a separate process.
  • Native apps and loaders, shown or announced but unreleased; see Native homebrew.
  • Other entry points: the browser (WebKit) route in testing, plus a cartridge route and an Artemis-save route.

What it can reach#

ns2jb's filesystem stage reaches beyond SmileBASIC's sandbox; the apps built on it so far don't.

What's new#

The last two days brought public backup tools, a nag on offline consoles and a browser route in testing.

As of about 11:55 UTC on 10-26, no newer firmware or patch had shipped, and as of 10-25 no ban had been reported. Two consoles are confirmed bricked; see Start here › Risks in brief.

Open challenges#

Six problems shape what comes next. Each lists what's been shown, what's claimed, and what's next.

Reliability of stages 2 and 3#

Persistence#

Native homebrew#

Deeper access#

Other entry points#

The demo (4.4.6)#

Where the project stands ›

Backing up your own games

You can now back up games you own. Hexa's OunceCake, public since 10-25, copies a game's code (ExeFS) and assets (RomFS) to your computer, unencrypted. The copy is for study and Datamining: it can't be played, emulated or reinstalled.

Ground rules#

What's been shown#

OunceCake dumps games as loose folders. Hexa says downloads, cards and key cards all dump fine, but some content fails, such as Nintendo Classics apps.

ContentDumps?Evidence
Installed digital gamesYesVerified. The README and several users
Game cardsYes. One Switch 1 card's installed update fails; see Still debated belowVerified. A Kirby Air Riders cartridge and Hexa's Ring Fit card
Game-key cardsYes. Hexa says the base holds only ExeFS and the assets are in the updateUnverified. One user's Pokopia key card gave only the update; Hexa had none to test
Updates and DLCYes, each in its own folderVerified. DLC support landed 10-24; updates too
Switch 2 EditionsYes, as the base game's DLC. Legends Z-A's is a placeholder fileVerified. Hexa mounted one; it counts as DLC
DemosDrag x Drive's, yes. Yoshi and the Mysterious Book's demo failed for one userVerified for Drag x Drive: one user dumped it, and another posted its hashes
Games on a microSD cardUntestedUnknown. Hexa hasn't tried it
System titlesNo; see the firmware dumper belowUnverified. One test by Hexa, before release. Another user says only that some system content fails
Nintendo Classics appsNo, even with an active subscription. GameCube and N64 fail in every reportVerified. Several users. On 10-26 another user's GameCube app still failed, with a different error. One NES sprite is reported; see Datamining › Still debated
SavesNo. OunceCake doesn't dump them, and no public tool does yetUnverified, in progress: Hexa is building a separate save tool and plans to try reading and writing. ftpd-sb reaches only SmileBASIC's own saves. The release blog's save-backup claim is still unconfirmed

A few single titles fail; see Fixing common problems.

What a dump is:

kurumuz's firmware dumper:

Running OunceCake#

You need a run that reaches 4/4, then a few commands on the same computer. It works, but isn't beginner-friendly. Exact commands are in OunceCake's README.

What you need:

  • kurumuz's fork as your host, updated on 10-25 or later for its --rpc option. OunceCake's README asks for it.
  • The latest OunceCake, cloned from its repo. It's plain Node.js, so there's nothing to build. Copies before Hexa's 10-25 evening fix can corrupt files.
  • The computer that runs the host, since OunceCake reads the host's run folder. Node.js and the network setup are as in Run it › Start the host.
  • Your console's local IP address, from its network settings.
  • An FTP client you can set to binary mode (also called Image or TYPE I), such as FileZilla.

Steps:

  1. Start the host with node run.cjs --rpc and reach 4/4 as usual. If you forgot --rpc, run again: OunceCake needs that open connection.
  2. Leave SmileBASIC open and the host running. Note the "Run folder" path the host prints.
  3. In a second terminal, in OunceCake's folder, run node ouncecake.cjs <run folder>. It lists your installed and card games with their title IDs; pick one. A title ID after the folder skips the menu.
  4. Wait for FTP up!, then connect your FTP client to the console's IP, port 2121. No username or password is needed.
  5. Set binary mode, then copy only the folders you want.
  6. For another game, or after swapping a card, stop OunceCake and start it again. The run doesn't need redoing.
  7. When you're done, stop OunceCake, press Ctrl-C in the host's terminal, and restart the console.

On a Mac, mac2jb v0.4.3 has OunceCake built in (Official). After a Held RPC run reaches 4/4, enter the console's IP, choose Open game list, pick your game, then Start FTP. Wait for "Game files are ready", then connect as in steps 4 and 5, in passive mode. It's one tool per console session, and there's more in Type the bootstrap › Mac (mac2jb).

One user reports dumping about 12 of their own games with kurumuz's fork and both devices on the LAN. Their runs reached 4/4 in 30–40 minutes on average (Unverified: one report).

Fixing common problems#

Update OunceCake first: on 10-25 Hexa fixed crashes, hangs and corrupted transfers.

ProblemCauseFixEvidence
Files are smaller than the FTP listing, ExeFS fails to load ("bad offset" or LZ4 errors), or text is garbledBefore the 10-25, 23:06 UTC fix, FTP clients in ASCII mode changed bytes: macOS's built-in client and FileZilla on "auto". ExeFS, text and extensionless files suffered mostUpdate OunceCake, which now refuses ASCII mode. Use binary mode, and re-dump older ExeFSVerified. Hexa's fix note; the missing bytes
"Console response timed out", or the console locks up mid-dumpA bug in older versionsUpdate. A locked-up console needs a new run; retrying doesn't helpVerified. Hexa's fixes; use the latest
OunceCake can't connect to the runThe host wasn't started with --rpcRun again with --rpcVerified. A helper and the README
Splatoon 3: "Invalid RomFS: offset exceeds numeric precision"UnknownNone yet, as of 10-26Verified. kurumuz on 10-25 and another user on 10-26
"ES prepare installed title license: result 0x691"UnknownNone knownUnverified. One user's physical Mario Kart 8 Deluxe
Nintendo Classics app: "OpenContentMetaDatabase", "ContentMetaNotFound" or mount errorsOunceCake doesn't support these apps yet. A subscription doesn't helpNone yet; Hexa is looking into itVerified. Several users. Another got "ContentMetaNotFound" on 10-26
No romfs folder in /baseThe game keeps its assets in the update. Seen on a game-key card and on digital games such as Puyo Puyo Tetris 2SLook in /updatesVerified. Hexa and an eShop Pokopia dump
A copy takes hoursFile count, not size. Mario Kart World is about 206k files and 21 GB. It takes about 1.5 hours, while large files move at about 50 MiB/sCopy only what you need. More parallel FTP connections may help (untested). There's no progress estimateVerified
A transfer stops midwayUnknownNo tested fix. One user is redoing the whole dump; compare sizes as in Check your dump belowVerified. Two users
Runs stopped reaching 4/4 after earlier dumpsUnknownReboot, and raise SmileBASIC's save size before erasing anything. One user's fresh SmileBASIC save brought 4/4 back; erasing the save deletes NS2Unverified. One user; see Troubleshooting › The run's stages

Check your dump:

  • Compare each file's size with the size the FTP server lists. A smaller file is corrupted.
  • The dump-hash thread. The community's Game Dump Hashes thread lets owners confirm a good dump. Its starter asks for SHA-256 hashes of each game's exefs and romfs folders, and pins the ones two people match.
  • Hash your own folders the way the thread explains, then compare. A match means your dump is intact. Post hashes only, never files.

Still debated#

QuestionOne sideOther sideWhere it stands
Is everything unencrypted, firmware too?kurumuz: "we dumped fw and the games completely unencrypted"Firmware has only partly been dumped, and some system fonts stay encryptedDisputed. True for game contents (Verified: the README); overstated for firmware.
Is a dump a whole game?"some ppl did" dump whole gamesIt's loose RomFS and ExeFS, not a package, and nothing runs itDisputed; the "loose files" side is stronger. All of a game's files copy, but not as a playable or installable game.
Do Switch 1 cards dump?Hexa's Ring Fit card workedOne user's physical Mario Kart 8 Deluxe failed, but on its installed update's license, not on the cardUnverified; one card tested, and nothing contradicts it.
Full filesystem read and write?Metr1k claims itPublic tools stay read-only. Zest thinks full-access FTP apps are "private for now"Unverified. One private source.
Why do dumps double in size?They're unpackagedCopying /base plus /updates stores the game twiceDisputed; the second side is stronger.

Refuted: "dumps are .nca files", "cartridges stay encrypted" and "ExeFS is unusable without keys". The README and Hexa's check of the code show unencrypted ExeFS, from cards and downloads alike.

What it would take#

Backing up works today. Playing, modding or restoring games would take much more:

Where the project stands ›

Datamining

Datamining here means looking inside files from games and system software you own, after you've backed them up; see Backing up your own games. This tab covers which formats open, with what, and what people have found so far.

Ground rules#

Formats and tools#

Switch 2 games use Switch 1's format families, often in newer versions, so older tools may need an update. Many files are zstd-compressed, so decompress .zs files first.

FormatWhat it isWhat opens itEvidence
.zs, .zstzstd-compressed fileszstd: run zstd -d on the fileUnverified, advice untested. Several users identify the format
BFRES v10 (.bfres)Models and texturesSwitch Toolbox, latest build: open the .bfres. Textures load with models; animations are broken for now (v10.2). Blender needs an importerVerified. Its developer shipped v10 and texture fixes, and notes the animation bug
.msarcSARC archives holding MSBT text, one folder per language in MalsSwitch ToolboxVerified. A modder and Switch Toolbox's developer
BYML (.byml)Structured data, such as map placements (bcett.byml) and visual effects (.esetb.byml)No Switch 2 tool reported yetUnknown
AINB v0x407AI logic in Mario Kart World's AI folderExisting AINB tools should mostly apply, since 0x407 isn't the newest versionVerified version (Hexa and Echocolat); tool support Unverified
BWAVStreamed music and soundvgmstream, for example its foobar2000 plugin: open the Streams folder. It converts to WAV, FLAC or MP3Verified. Several users
WebMMario Kart World's movies, about 1440pAny video playerUnverified. Hexa's look
Pokopia .fdataKoei Tecmo archives with g1m models and g1t texturesRDBExplorer, pointed at root.rdb. Switch Toolbox can't open Koei Tecmo filesUnverified. One user browses with it, an unvetted tool here
ExeFS (main, sdk, subsdk*)Game codeGhidra with the Switch Loader, whose maintainer added work-in-progress Switch 2 support. Re-dump first if it fails; see Backing up your own games › Fixing common problemsUnverified. The maintainer's own report
Kirby Air Riders .dat, .cat, .soundstreamFormats from an outside studioNothing yet. Switch Toolbox can't read them, and Smash Ultimate's tools don't fitUnknown. Needs reverse engineering
NCA4 packagesSwitch 2's encrypted game containersNothing yet: no keys, and beetool's NCA4 support is incompleteDisputed; see below

What's been found#

Still debated#

QuestionOne sideOther sideWhere it stands
Same formats as Switch 1?Many formats are the sameThey're newer versions, such as NCA4, and bfres v10 needed tool fixesVerified. Both sides agree: same families, newer versions.
Do the Nintendo Switch Online classics apps dump?GameCube and N64 fail in every report, and most others do too, even with an active subscriptionOne user got a sprite out of the NES appDisputed; failures are the common report. Hexa is investigating as of 26 Oct.
Is NSMBU Deluxe's update a debug build?Called one second-handIt has symbols, not a debug buildDisputed; "symbols only" is stronger.
Mario Kart World's music codecNintendo DSP ADPCMSome files are OpusDisputed. Probably mixed, mostly DSP ADPCM.
Does beetool open NCA4?YesIts support is incompleteDisputed; "incomplete" is stronger, since nobody has extracted one.
DK Bananza's engineModuleSystem, like Mario Kart World, a first guessAction Library, going by its .alsarc archivesDisputed; Action Library is stronger.

Whether firmware comes out fully unencrypted is in Backing up your own games › Still debated.

Glossary

This tab explains each term the guide uses, A to Z, and links to the place where it's covered in full.

0–9#

A–D#

E–H#

I–M#

N–R#

S–Z#