Waiting for RCM device…
No payload loaded yet, add a .bin file below.
Download payloads

Browser compatibility

WebUSB requires a Chromium-based browser (Chrome, Edge, Opera, Brave) on macOS, Linux, ChromeOS, or Android, served over HTTP(S) or from localhost. It is not supported in Firefox or Safari.

Windows is explicitly NOT supported, despite having the ability to run Chromium-based browsers.

On Linux, unprivileged USB access to the device typically requires a udev rule for vendor 0955 / product 7321. To set up this udev rule, please refer to this page.

How results are classified

This page mirrors OmniRCM's libusb-based injector as closely as the WebUSB API allows. WebUSB doesn't expose raw URB status codes the way native libusb/libusbK does, so results are inferred from documented USBTransferStatus values and transfer outcomes:

  • Unpatched (success): the stack-smash control transfer throws/disconnects, the console rebooted into the payload.
  • Patched V1: writes time out at offset 0xF000 (the intermezzo boundary), or the smash request resolves with status: "ok" and 0 bytes, the bootROM stopped responding rather than crashing. Additionally, the Device ID is used to identify the console model in situations where bad cables cause Erista consoles to "slip" to the Mariko timeout offset, still providing an accurate result.
  • Patched V2 / Mariko: the Device ID is used to instantly identify Mariko consoles. Additionally, the payload write fails at exactly offset 0x10000 (Mariko's bootROM stops accepting data there), or the smash request never resolves at all.
Payload injector using the WebUSB API, created and designed by DefenderOfHyrule.