Troubleshooting
Common issues and how to resolve them, drawn from the project's known limitations.
CUDA silent CPU fallback
Symptom: on a machine with an NVIDIA GPU, the app runs slowly (~2 fps), the source shows rtm:cpu, and you may see a misleading "cublasLt missing" error.
Cause: if nvidia-cufft-cu12 is missing, the ONNX Runtime CUDA execution provider fails silently and falls back to CPU.
Fix: make sure the full CUDA 12 wheel set is installed (nvidia-cuda-runtime-cu12, cublas, cufft, cudnn, nvrtc). The installer installs these for you. The engine's cuda_setup.py puts the CUDA wheel bin directories on PATH before ONNX Runtime loads — but the wheels themselves must be present.
GPU acceleration is RTM-only
MediaPipe's Python GPU delegate is OpenGL-only and falls back to CPU on Windows. CUDA speedup requires the RTMW + onnxruntime-gpu path, not MediaPipe.
Model download blocked
Symptom: on first run, the RTMW model fails to download.
Cause: some networks (for example certain institutions) block the openmmlab CDN.
Fix: the app uses a Hugging Face mirror by default (Izymka/rtmw-dw-x-l_simcc-cocktail14). If that is also blocked, download the model files manually and place them in engine/models/rtm/.
Anti-cheat blocks input
Symptom: input works on the desktop but a competitive game ignores it.
Cause: many games reject SendInput. A ViGEm virtual Xbox 360 controller is accepted far more widely, but kernel-level anti-cheat can still reject synthetic input devices.
Fix: prefer Gaming Mode (virtual controller) over desktop input injection for games. Even then, some kernel-level anti-cheat systems will reject synthetic devices — this is an external hard limit that no input tool can fully work around.
TensorRT version pinning
Symptom: TensorRT acceleration silently fails to engage.
Cause: ONNX Runtime 1.26 links nvinfer_10.dll (TensorRT 10). The latest tensorrt-cu12 package is v11, which silently fails.
Fix: pin the TensorRT package below v11:
pip install "tensorrt-cu12<11"
With the correct version, RTMW reaches roughly ~90 fps (FP16) on an RTX 2060.
Single-camera depth is ambiguous
Symptom: a hand directly behind your back is only roughly placed.
Cause: one webcam gives good 2D and only rough depth; a fully occluded joint can only be predicted.
Fix: add a second camera (for example front + back). Multi-camera fusion selects whichever view actually sees each joint. See Cameras.
