Getting started
The daemon has no installer (the desktop app does). Installing it means putting one executable somewhere and asking Windows to start it at logon. This page does both, and covers the one step that can go wrong: retiring Synapse.
What you need
Section titled “What you need”- Windows 10 or 11.
- At least one supported or experimental device, on its cable or dongle.
- PowerShell (part of Windows) and administrator rights once, to copy the executable to
%ProgramFiles%. The daemon itself runs as you, unelevated. - To build from source instead of downloading: Git and Rust with the Visual Studio C++ build tools.
1. Get uncoild
Section titled “1. Get uncoild”From a release: download uncoild.exe and install-task.ps1 (and, if you want them, uncoil.exe, the
command line, and uncoil-app-<version>-x64-setup.exe, the desktop app) from
GitHub Releases into one folder, and check them against
SHA256SUMS.txt:
Get-FileHash .\uncoild.exe -Algorithm SHA256 # compare with the line in SHA256SUMS.txtThe binaries are not code-signed yet, so Windows SmartScreen may warn. In step 3, run .\install-task.ps1
from that folder: it installs the uncoild.exe next to it.
From source, with a stable Rust toolchain (1.85 or newer, MSVC target):
git clone https://github.com/justinthevoid/uncoilcd uncoilcargo build --release -p uncoild -p uncoil-cli # -> target\release\uncoild.exe and uncoil.exeuncoild --version prints the version and exits; it is otherwise silent. It has no window and no console.
uncoil.exe is the optional command line; it talks to the running daemon and needs no installing.
2. Retire Synapse safely
Section titled “2. Retire Synapse safely”Synapse switches devices into driver mode, where the host is expected to handle some of the keyboard’s functions. If Synapse is killed (Task Manager, a crash, a forced uninstall) instead of quitting, it never switches them back, and the BlackWidow’s dial scrolls instead of changing the volume and the media keys go dead until the keyboard is power-cycled.
In order:
- Quit Synapse from its tray icon, so it gets the chance to restore the devices.
- Uninstall it from Windows Settings, under Apps.
- Start uncoil (next step). On connect, uncoil puts every device it drives back into normal mode, where the firmware runs the Fn keys, media keys, dial and DPI buttons itself.
- If the dial still scrolls or the media keys do nothing, unplug the keyboard and plug it back in. That always clears driver mode.
uncoil notices when Synapse, Razer’s Chroma SDK services, OpenRGB or SignalRGB is running (by process name,
every 5 seconds), notes it once in its log and shows a notice in the app and in uncoil status. It also takes
the same device lock as OpenRGB and, apparently, Razer’s software, so their reports never get mixed up with
uncoil’s on one device; when another program holds it, uncoil skips a frame, or a command fails with “another
program is talking to … right now” and can simply be tried again.
3. Run it at logon
Section titled “3. Run it at logon”From the source checkout, after building:
powershell -ExecutionPolicy Bypass -File scripts\install-task.ps1With no arguments it installs the uncoild.exe next to the script (a release download), or else the
clone’s target\release\uncoild.exe. To install one from somewhere else, pass it with -Exe path\uncoild.exe.
The script asks for elevation (one UAC prompt), then:
- stops any running
uncoildin your session and copies the executable to%ProgramFiles%\uncoil\uncoild.exe, a folder only administrators can write, so no program running as you can swap it; it checks the copy’s SHA-256 against the original; - registers a scheduled task named uncoil that starts it at your logon (after a 5 second delay), unelevated, with no time limit, restarting it up to five times a minute apart if it exits;
- starts the task straight away.
What it did is written to %ProgramFiles%\uncoil\install.log and shown at the end.
uncoild talks to Razer devices as ordinary user-mode HID and needs no administrator rights. Two options change that:
-OpenRgbalso registers uncoil-openrgb, an elevated task that runsuncoild --openrgb-onceat logon (after 10 seconds) for motherboard, GPU and RAM lighting through OpenRGB, which needs administrator rights to reach RAM lighting over SMBus. Inhardwaremode it hands the devices over once and exits; inlivemode it keeps OpenRGB running as a local server (Task Scheduler shows it Running) and the daemon sends it the desk effect. It also creates%ProgramData%\uncoil\openrgb, an administrators-only folder for OpenRGB’s settings. The task does nothing untilopenrgb.modeis set in the config (the app’s Settings page does that), and it first runs at your next sign-in. OpenRGB itself must be installed inC:\Program Files\OpenRGB, with PawnIO if OpenRGB needs it for your RAM or motherboard. Running the script again without-OpenRgbremoves the task.-Elevatedruns the daemon itself elevated, as installs before this option did. It is a fallback for a PC where uncoild cannot open its devices unelevated; none has been seen so far.
powershell -ExecutionPolicy Bypass -File scripts\install-task.ps1 -OpenRgb4. First run
Section titled “4. First run”Within a second the desk should show the default effect: a rainbow wave at 35°, one colour cycle every 14 seconds, one full rainbow per 26 keys of width, crossing from the keyboard to the mouse and mat.
To check on it from PowerShell:
Get-ScheduledTask uncoil | Select-Object State # RunningGet-Process uncoild # one processGet-Content "$env:LOCALAPPDATA\uncoil\status.json" # devices, fps, memory, refreshed every 2 sGet-Content "$env:LOCALAPPDATA\uncoil\uncoild.log" -Tail 20The log records each device as it is opened (opened Razer BlackWidow V4 Pro 75% (02B3, wired)), display
changes and config reloads.
The command line asks the daemon directly:
.\target\release\uncoil.exe status # version, display state, the daemon's own memory and CPU, each device's fps.\target\release\uncoil.exe devices # connected devices and what each supports.\target\release\uncoil.exe help # every commandChange settings
Section titled “Change settings”Either open the desktop app, or edit %APPDATA%\uncoil\config.json in any text editor. uncoild notices the
file changing and applies it within a frame or two; there is nothing to restart. Without a config file it
runs the defaults. Every key is listed under Configuration.
The app doesn’t need to stay open. If you’d like it to, its Tray & notifications page can keep it in the
tray when the window closes (the tray icon switches the effect and opens the window), and start it in the
tray with Windows: that adds a per-user startup entry (the Run key under your account) launching
uncoil-app.exe --tray, and turning it off removes the entry. While the app runs, it checks wireless
devices’ batteries every 10 minutes and notifies you once at the level you pick (20 % by default), once more
at 10 %, and once when charging reaches 100 %. Only one copy of the app runs; starting it again brings up
the open window. These preferences live in %APPDATA%\uncoil\app.json, apart from the engine’s config.
Developers: notifications from a dev build (pnpm tauri dev) show under PowerShell’s name and icon, because
the app isn’t installed.
Update
Section titled “Update”Run the install script again with the new uncoild.exe. It stops the running copy before replacing it. Pass
the same options as before: without -OpenRgb, an existing uncoil-openrgb task is removed.
Uninstall
Section titled “Uninstall”From the folder with a release’s uninstall-task.ps1 (or the source checkout):
powershell -ExecutionPolicy Bypass -File scripts\uninstall-task.ps1 # tasks and executable (asks for elevation)Remove-Item -Recurse "$env:LOCALAPPDATA\uncoil" # status file, log and the onboard-write journalRemove-Item -Recurse "$env:APPDATA\uncoil" # your settings, the app's settings and any extra device filesThe uninstall script removes both tasks (uncoil and uncoil-openrgb; stopping the latter also ends
an OpenRGB server it started in live mode), %ProgramFiles%\uncoil and OpenRGB’s settings folder
%ProgramData%\uncoil. It deletes nothing in your user profile: the two
Remove-Item lines are for a clean slate, and you run them yourself.
uncoil leaves devices in normal mode, so the keys, dial and media controls keep working afterwards. Anything
written to a device’s own memory (key remaps, a saved firmware effect, DPI stages) stays there until
something rewrites it. To put a remapped key back first, use uncoil keymap reset or the app’s Restore
original, before deleting %LOCALAPPDATA%\uncoil: the journal there remembers what each key did before
uncoil first wrote it.