How to set up a Cronus Zen script

Step by step guide to loading a Cronus Zen script from your browser, pairing your controller on PS5, PS4, Xbox and PC, and fixing the problems people hit most.

Five steps, start to finish

  1. Open the studio in your browser

    Go to cronuszens.com on a desktop computer in Chrome, Edge or Opera. Those are the browsers with WebHID, which is what lets a page talk to the Zen. There is nothing to download and nothing to install.

  2. Update the Zen firmware once

    The firmware is the one job that still goes through Cronus’s own desktop Zen Studio. Connect the Zen to your computer with the USB cable and let it update. Most scripts that refuse to compile are running on old firmware.

  3. Connect the Zen and pick a slot

    Plug the Zen into this computer, press Connect, and choose it in the browser prompt. Pick an empty slot and press Program, and the script is written straight to the device. The Zen holds several at once and you switch between them on the device itself.

  4. Connect the Zen to your console

    Plug the Zen into a USB port on the console using the OUTPUT port, then plug your controller into the INPUT port or pair it wirelessly.

  5. Check the script menu

    Load into the game and open the script menu with the button combination named in the script post. That confirms the script is running rather than just installed.

On Linux, if the Zen will not open

The studio works on Linux, and it is the only way to write to a Zen there at all, since the desktop Zen Studio is Windows and macOS only. One thing is in the way. Linux creates the device owned by root and grants nobody else access, and nothing in the standard rules covers a device like the Zen. So the browser can list it in the picker and still be refused the moment it tries to open it, which reads as the site being broken when it is a permission that has never been granted.

  1. Confirm it is a permission problem

    Open chrome://device-log in another tab, then come back and press Connect. If the log says FILE_ERROR_ACCESS_DENIED against a path like /dev/hidraw3, this is it, and that path is the device you are about to grant access to.

  2. Check how your browser was installed

    Run: snap list | grep -i chrom. If that finds your browser, stop here. A Snap browser is sandboxed away from these devices before file permissions are even looked at, and no rule can reach it. Install Chrome from the .deb or .rpm instead. Flatpak is fine and needs nothing special.

  3. Add the rule

    Create /etc/udev/rules.d/70-cronus-zen.rules containing the single line below. The 70 matters: the rule that acts on this is numbered 73, and udev reads files in order, so the usual 99 prefix would add the tag after the only thing that reads it and change nothing.

    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="2008", ATTRS{idProduct}=="0010", TAG+="uaccess"
  4. Apply it, then replug

    Run the two commands below, then unplug the Zen and plug it back in. The replug is not optional. Reload the studio afterwards.

    sudo udevadm control --reload-rules
    sudo udevadm trigger --subsystem-match=hidraw
  5. Check it worked

    Run getfacl on the device path from step 1. You want a line reading user:yourname:rw-, with the rw spelled out: read on its own leaves the studio connecting and then failing mid-write. Note that ls -l still shows crw------- here, and that is correct. The trailing + is the only visible sign, and the permission itself lives in the access list rather than in those bits.

    getfacl /dev/hidraw3

Two notes, because both cost people real time. The rule Chrome’s own documentation prints uses a group called plugdev, which does not exist on Arch, Fedora or openSUSE, so it silently does nothing there. And the rule on the Cronus site is for the device in firmware update mode, which is a different identity to the one it uses the rest of the time, so it will not help here.

When it does not work

The controller does not respond after plugging in the Zen

The OUTPUT port goes to the console and the INPUT port takes your controller. Swapping them is the most common mistake, and nothing works until they are the right way round.

The script compiles but nothing happens in game

Check that the slot you programmed is the slot the Zen is actually on. Press the button on the device to cycle slots, and confirm the script menu opens on your controller.

Timing feels off

NBA 2K scripts are tuned to a build height, so a script set for one height will be early or late on another. Set the height in the script menu to match your build.

The console disconnects the controller randomly

Use a wired connection between the controller and the Zen while you are testing. Wireless pairing through the Zen adds a failure point that looks like a script problem.

Where to go next

Every script on this site is programmed to a slot from the browser, so once the Zen is on current firmware there is nothing else to install.