UDCAP Linux app for Monado
  • Svelte 69.5%
  • Rust 15.5%
  • TypeScript 10.2%
  • CSS 2.6%
  • Shell 1.6%
  • Other 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-10 16:18:18 +02:00
.github ci: the AppImage starts on Ubuntu 22.04 2026-10-05 15:15:49 +02:00
.vscode Initial commit 2026-06-10 09:55:23 +02:00
extras/envision feat: guide for monado fork 2026-06-19 20:20:22 +02:00
packaging chore: bump to 1.1 2026-10-09 14:47:44 +02:00
src feat: minimalist mode and a first-launch setup page 2026-10-09 14:47:44 +02:00
src-tauri chore: bump to 1.1 2026-10-09 14:47:44 +02:00
static ci: build releases on Debian 12 2026-10-03 17:37:42 +02:00
.gitignore ci: build releases on Debian 12 2026-10-03 17:37:42 +02:00
LICENSE feat: calibration sounds 2026-06-10 21:32:39 +02:00
package.json chore: bump to 1.1 2026-10-09 14:47:44 +02:00
pnpm-lock.yaml feat: redesigned interface 2026-10-03 22:00:58 +02:00
README.md chore: update readme with new screenshots 2026-10-10 16:18:18 +02:00
screenshot-minimal.png chore: update readme with new screenshots 2026-10-10 16:18:18 +02:00
screenshot-setup.png chore: update readme with new screenshots 2026-10-10 16:18:18 +02:00
screenshot.png chore: update readme with new screenshots 2026-10-10 16:18:18 +02:00
svelte.config.js Initial commit 2026-06-10 09:55:23 +02:00
sync-server.sh ci: build releases on Debian 12 2026-10-03 17:37:42 +02:00
sync-steamvr.sh ci: build releases on Debian 12 2026-10-03 17:37:42 +02:00
tsconfig.json Initial commit 2026-06-10 09:55:23 +02:00
vite.config.js Initial commit 2026-06-10 09:55:23 +02:00

🧤 UDCAP Control

Use your UDCAP VR gloves on Linux, for Monado and SteamVR

UDCAP Control

AI usage: This project was developed with AI assistance (Anthropic's Claude), under human direction, testing, and review.

What it does

UDCAP Control is the desktop app that sits between your gloves and your VR runtime. It talks to the gloves, keeps them connected, and turns them into a pair of Index-style controllers with full finger tracking.

  • Works with Monado and SteamVR. Pick your runtime with one toggle. SteamVR users get the driver installed on first launch. Monado users run the Monado fork that has the glove driver built in.
  • Set up once. The first launch walks you through the runtime, the device permissions, the driver and your trackers.
  • A small window for every day. Like SteamVR's status window, it shows both gloves, their battery and the runtime connection, with the full app one click away.
  • Guided calibration. Start it from the app or with the glove's power button, and follow the audio cues.
  • Fine-tune each finger. Live readouts with draggable handles for every finger's range, plus overall curl strength and finger splay.
  • Make the gloves feel like controllers. Remap A, B, System and the stick on a picture of the glove. Choose which finger drives the trigger and which drives the grip. Calibrate the thumbstick. Test the vibration.
  • Fix the hand position per game. Alignment profiles hold the position and rotation offsets for each hand, so VRChat and your other games can each have their own. Switch profiles live.
  • Pair and stay connected. Pair gloves to their receivers, change the radio channel to dodge interference, and let the app reconnect a glove that was switched off and on again.

If a finger ever refuses to track, Settings has a diagnostics page with a guided range test and a report you can share.

Requirements

  • Linux. Packages are built for Debian/Ubuntu, Fedora, Arch and as an AppImage.
  • UDCAP gloves with their USB receivers.
  • SteamVR, or a Monado built from the fork. Stock Monado does not include the glove driver, because Monado compiles its drivers in. The app has a step-by-step guide for this, whether you use Monadeck, Envision or your own build.

WiVRn is not supported yet. WiVRn ships its own built-in Monado, so the glove driver cannot be added to it the way it is to the fork. Standalone headsets streaming through WiVRn will not see the gloves for now. A WiVRn fork support is planned.

Install

Grab the .deb, .rpm or .AppImage from the releases page. Arch users can build the package from packaging/arch/.

Using it

The small window in its different states

  1. Plug in the receivers.
  2. Open the app and follow the first-launch setup.
  3. Press Start in the small window and switch the gloves on.
  4. Press Calibrate and follow the three poses. Your fingers now track.
  5. Start your runtime. Launch UDCAP Control before SteamVR, so the driver can find the gloves.

The runtime's logo in the corner turns blue once it has picked up the gloves. The menu opens the Hands, Controls, Alignment, Devices and Settings pages when something needs tuning.

Troubleshooting

My gloves are not detected in Monado. Make sure you are running the fork, and that your trackers are paired and connected. You should see the trackers and the "UDCAP" gloves in Monado's device list.

My gloves are not detected in SteamVR. Launch UDCAP Control before SteamVR, or restart SteamVR with the app open.

A glove stopped responding after I switched it off. The app resets the receiver and picks the glove back up on its own. Give it a few seconds.

My hands sit in the wrong place or point the wrong way. Open the Alignment page and adjust the offsets for that hand. Save them into a profile named after the game.

One finger won't track or moves the wrong way. Run calibration again, keeping the glove snug and each finger still during the fist pose. If it persists, open Diagnostics from Settings and send the report.

Development

The app is a Tauri 2 + SvelteKit (Svelte 5) project. It bundles two binaries built from UDCAP-server: the server that reads the gloves, and the SteamVR driver. Clone that repo in a folder next to this one, then:

pnpm install
./sync-server.sh        # build and bundle UDCAP-server (once)
./sync-steamvr.sh       # build and bundle the SteamVR driver (once)
pnpm tauri dev

pnpm tauri build produces the deb, rpm and AppImage packages. The server publishes glove state through shared memory, which both the Monado driver and the SteamVR driver read. The app supervises the server, reads the same memory for its live displays, and writes your offsets, mappings and commands back. An Envision profile for the Monado fork lives in extras/envision/.

Releases are built by CI, on Debian 12 so they also run on older distros: push a version tag (v0.7 for 0.7.0) and it drafts the GitHub release. It builds the UDCAP-server commit that the sync scripts record in .github/udcap-server.ref, so push UDCAP-server and commit that file first. Releases ship the voice cues in packaging/sounds/.

Credits

UDCAP glove decoding by the OldestNova team (Community Hand Driver Core, MIT). Valve for OpenVR, SteamVR and the hand-skeleton sample. Monado (OpenXR runtime).

License

MIT.