Skip to content

Troubleshooting

hifihedgehog edited this page May 21, 2026 · 34 revisions

Troubleshooting

Common problems and how to fix them. If your issue is not on this page, check GitHub Issues.

Settings page where most troubleshooting starts (driver install, polling interval, language)

Related pages: Installation, Settings, Driver Management, Devices.


No Devices Detected

The Devices page is empty or the Dashboard shows "0 / 0 devices online."

  1. Try a different USB port. Use one directly on the computer, not a hub.
  2. Try a different cable. Some cables are charge-only.
  3. Confirm SDL3.dll is in the PadForge folder. Re-extract the zip if missing.
  4. Restart PadForge. Some devices need a fresh launch.
  5. Check Windows Device Manager. If the device does not appear under "Human Interface Devices" or "Sound, video and game controllers," the issue is the device or its driver.
  6. For Bluetooth controllers, pair and connect in Windows Bluetooth settings before starting PadForge.
  7. If HidHide is installed, open the HidHide Client and add PadForge to the whitelist. Or disable "Hide devices from games" on the Settings page to test.
  8. Close other controller tools (DS4Windows, BetterJoy, reWASD, x360ce). They may intercept access.
  9. DualShock 3 requires DsHidMini. Standard Windows HID drivers do not support DS3.

Controller Detected but Not Mapping

The controller appears on Devices but produces no output or wrong output on the virtual controller.

  1. Unknown or unusual controllers may need manual mapping.
  2. Assign the device to a slot. Select at least one numbered toggle on the Devices page.
  3. Map inputs manually via Record on the Button and Axis Mappings tab for each button and axis.
  4. Enable Force raw joystick mode on the Devices page if SDL3's remapping produces wrong outputs. Re-record all mappings afterward.
  5. Check live input on the Devices page. If axes and buttons do not respond there, the issue is at the driver or HID level.
  6. Check the source dropdown on each mapping row. Confirm it points to the correct input device.

Virtual Controller Not Appearing in Games

A slot is created and a device assigned, but games do not detect the virtual controller.

  1. Install HIDMaestro from Settings for Xbox, PlayStation, or Extended output.
  2. Install Windows MIDI Services from Settings for MIDI output.
  3. Confirm the slot is enabled. The power icon on the Dashboard card should be green.
  4. Confirm the engine is running. The Dashboard should show "Running" with a green icon.
  5. Restart the game. Some games only scan for controllers at startup.
  6. Check the game's input settings. Some games require manual controller selection.
  7. For Extended controllers, verify in joy.cpl (Win+R > joy.cpl). If controllers are not listed, see "Extended Controllers Not Working" below.

Double Input in Games

Every press registers twice, menus scroll too fast, or the game shows two controllers.

The game is reading both the physical controller and PadForge's virtual controller.

  1. Install HidHide from Settings.
  2. Enable "Hide devices from games" on the Settings page.
  3. On the Devices page, enable "Hide from games" per device.
  4. If PadForge stops seeing a hidden device, check the HidHide whitelist on Settings: PadForge's path must be listed.
  5. Add other apps (emulators, tools) to the whitelist if they also need the hidden device.
  6. Restart the game after changing HidHide settings.
  7. Check the game's controller settings. Disable the physical controller and keep the virtual one.
  8. If using Steam, disable Steam Input for the game or close Steam entirely.
  9. BLE controllers (e.g., Xbox via Bluetooth) are now properly hidden by HidHide. If peek-through persists after enabling "Hide from games," ensure you are running PadForge v2.2.1 or later.

Rumble Not Working

No vibration from the physical controller when games send force feedback.

  1. Set Overall Gain above 0% on the Force Feedback tab.
  2. Set both left motor and right motor strength above 0%.
  3. Click Test Rumble to verify hardware support. No vibration means the device lacks rumble motors or driver support.
  4. Confirm a device is assigned to the slot and connected (green status dot).
  5. Check rumble support on the Devices page capabilities list. Devices without native rumble attempt haptic fallback, but results vary.
  6. Try a different game. Not all games use force feedback.
  7. Close other controller software (Steam Input, DS4Windows, reWASD) that may intercept rumble.
  8. DS3 via DsHidMini SDF does not support rumble through SDL3. Use DsHidMini's XInput mode for rumble.
  9. For Extended output, the game must send HID PID 1.0 force feedback. See "Force Feedback Not Working" below.

Audio Bass Rumble Not Working

Audio Bass Rumble is enabled but the controller does not vibrate, or the Level meter stays flat.

  1. Confirm audio plays through the system default render device. The Level meter should show activity.
  2. Level meter flat during playback? Toggle Audio Bass Rumble off and on to restart WASAPI capture.
  3. Set Overall Gain above 0%. It applies to audio rumble too.
  4. Increase sensitivity (default 4, try 8-12, range 1-20).
  5. Raise Bass Cutoff (default 80 Hz, range 40-200 Hz) to capture more mid-bass.
  6. Set both motor scale sliders above 0%.
  7. Click Test Rumble. No vibration means the device lacks rumble motors.
  8. Some apps (DAWs, certain games) open audio in exclusive mode, blocking WASAPI loopback.
  9. At least one audio output device must be active in Windows Sound settings.

Extended Controllers Not Working

Extended (HIDMaestro) controllers do not appear in games or joy.cpl.

  1. Run PadForge as administrator. HIDMaestro install/uninstall requires elevation. If the UAC prompt was cancelled, right-click PadForge.exe and select "Run as administrator."
  2. Verify the HIDMaestro driver shows "Installed" on the Settings page.
  3. Check joy.cpl (Win+R > joy.cpl). If empty, create an Extended slot on the Dashboard first.
  4. Restart PadForge after installing HIDMaestro.
  5. If a slot stays stuck on "Initializing," check the HM inactivity destroy timeout in Settings. After the timeout, a slot whose mapped devices stay offline has its live virtual controller torn down to free its kernel slot. The slot configuration (mappings, profile, position) is preserved. The virtual controller recreates automatically when the devices return online.

Force Feedback Not Working

Games send force feedback but the physical controller does not vibrate on an Extended slot.

  1. Confirm the game sends HID PID 1.0 force feedback. Most native DirectInput FFB games do. XInput-only games do not. Use Xbox or PlayStation output for XInput rumble.
  2. Set Overall Gain above 0% on the Force Feedback tab.
  3. Set motor strength sliders above 0%.
  4. Click Test Rumble to confirm the physical controller supports rumble.
  5. HIDMaestro Extended profiles publish constant, ramp, periodic (sine, square, triangle, sawtooth), and condition (spring, damper, inertia, friction) effects. Effect types outside that set may not produce rumble.
  6. Restart the game. Some games only initialize FFB at startup.

MIDI Not Available

The MIDI button does not appear in the "Add Controller" popup.

  1. Install Windows MIDI Services from Settings.
  2. Windows MIDI Services requires Windows 11. It is not available on Windows 10.
  3. Restart PadForge after installing.
  4. Verify the "Windows MIDI Services" service is running (Win+R > services.msc).
  5. "Failed to create MIDI session" means the SDK initialized but cannot reach the service. Restart the service or reboot.

No MIDI Output

A MIDI slot is active but no messages reach the DAW or synthesizer.

  1. In the DAW, look for "PadForge MIDI N" in the MIDI input list.
  2. Set the receiving app to read from the PadForge MIDI endpoint.
  3. Confirm the engine is running and the slot is enabled (green power icon).
  4. Match the MIDI channel (1-16) between PadForge and the receiving app.
  5. Verify CC numbers (axes) and note numbers (buttons) match what the receiving app expects.
  6. Use a MIDI monitor (MIDI-OX or Windows MIDI Services console) to confirm PadForge is sending. If messages appear there but not in the DAW, the issue is DAW configuration.

My Macro Doesn't Fire

A macro trigger is configured but pressing the trigger does nothing.

  1. All trigger components must be active simultaneously. Partial presses do not fire.
  2. For axis triggers, the input must exceed the configured threshold percentage.
  3. Confirm the macro's enable checkbox is checked.
  4. Confirm the engine is running and the slot is enabled.
  5. If the trigger source is "Input Device" but no device is assigned, there is nothing to read. Switch to "Output Controller" or assign a device.
  6. Check for conflicting macros with overlapping triggers on the same slot.

Mouse Actions from Macros Aren't Working

A macro with Mouse Move, Mouse Button, or Mouse Scroll produces no visible effect.

  1. Match the axis source. "Output Controller" reads mapped output, "Input Device" reads the physical device directly.
  2. Adjust the sensitivity slider if movement is too fast or too slow.
  3. Confirm the trigger is firing (see "My Macro Doesn't Fire" above).
  4. Anti-cheat software may block simulated mouse input.

Always-Mode Macro Won't Stop

A macro set to "Always" runs continuously regardless of button state.

  1. Expected behavior. Always-mode macros fire every frame while the slot is active. No trigger required.
  2. Uncheck the macro's enable checkbox to stop it.
  3. Delete the macro if it is no longer needed.
  4. Disable the slot (power icon on the Dashboard card) to stop all its macros.

Keyboard+Mouse Not Working

A Keyboard+Mouse slot is active but key presses or mouse movement do not appear in games.

  1. Verify the slot type is Keyboard+Mouse on the Dashboard card.
  2. Assign physical inputs to keyboard keys or mouse buttons on the Mappings tab.
  3. Adjust mouse sensitivity on the Sticks tab or macro action settings.
  4. Anti-cheat software (EAC, BattlEye, Vanguard) may block simulated input.
  5. Confirm the engine is running and the slot is enabled.

Settings Not Saving

Changes revert after restart or the settings file does not update.

  1. Wait for autosave. PadForge saves after changes settle. Unexpected closes may lose recent edits.
  2. Click Save on the Settings page to force an immediate save.
  3. Confirm PadForge has write access to its folder. PadForge.xml lives next to the executable. "Error saving settings" in the status bar indicates a permissions issue.
  4. Click "Open Folder" on Settings and verify PadForge.xml exists and is not read-only.
  5. Add a PadForge exception if antivirus software blocks file writes.
  6. If "Error loading settings" appears on startup, the XML is corrupted. Delete PadForge.xml and restart. PadForge creates fresh defaults. Or click "Reset to Defaults."
  7. If the folder is synced by OneDrive, Dropbox, or similar, concurrent access across machines can corrupt the file. Move PadForge to a non-synced folder.

App Won't Start or UAC Prompt Issues

PadForge does not start, closes immediately, or shows a UAC prompt every time.

  1. UAC is expected. PadForge's app.manifest declares requireAdministrator so the whole engine — HIDMaestro driver registration, HidHide whitelist edits, the polling loop — runs in one elevated process.
  2. Clicking "No" on UAC blocks startup. Windows does not start a requireAdministrator app when the user declines the prompt. Run PadForge again and accept the prompt.
  3. PadForge allows only one instance. Check Task Manager for existing PadForge processes.
  4. PadForge requires the .NET 10 Desktop Runtime. Download it from Microsoft if missing.
  5. If SDL3.dll is missing, PadForge crashes on startup. Re-extract from the release zip.

High CPU Usage

PadForge uses significant CPU, causing fan noise or slowdowns.

  1. Increase the polling interval in Settings > Input Engine. Default is 1 ms (~1000 Hz). Try 4 ms (~250 Hz) or 8 ms (~125 Hz) for casual use.
  2. Disable "Continue polling when window loses focus" if PadForge is only needed during gameplay.
  3. Remove unused virtual controller slots.
  4. Disable Audio Bass Rumble on unused slots (runs WASAPI capture and real-time DSP).

DSU Motion Not Working in Emulator

The emulator does not receive gyroscope or accelerometer data.

  1. Enable "Enable DSU motion server (cemuhook)" on the Dashboard: Status should show "Listening."
  2. Match the port (default 26760) between PadForge and the emulator. "Port already in use" means another app (BetterJoy, DS4Windows) is on that port.
  3. Use 127.0.0.1 as the server address. PadForge binds to loopback only.
  4. Confirm the controller has motion sensors on the Devices page. Supported: DualSense, DualShock 4, Switch Pro, Switch 2 Pro.
  5. DSU protocol supports slots 1-4 only. Assign the motion device to one of those slots.
  6. Allow UDP port 26760 through Windows Firewall.
  7. In the emulator's motion settings, add a DSU server at 127.0.0.1 with the matching port and select the correct slot.

Web Controller Not Connecting

The browser shows "Disconnected" or cannot reach the web controller URL.

  1. Enable the web controller on the Dashboard: Status should show "Running" with a URL.
  2. Both devices must be on the same Wi-Fi or LAN network.
  3. PadForge creates a firewall rule automatically (requires admin). If not elevated, add a manual TCP rule for port 8080.
  4. "Port in use" means another app occupies port 8080. Change the port in Settings.
  5. "Access denied (error code 5)" on non-elevated systems. Run as administrator or use a port above 1024 with a URL reservation (netsh http add urlacl).
  6. Rotate the browser device to landscape orientation.
  7. Try Chrome, Firefox, or Edge if WebSocket issues occur.

Web Controller drops on iOS Safari After Tab Switch

On iPhone or iPad Safari, the web controller shows "Disconnected" after locking the screen, switching tabs, or returning from another app.

iOS Safari kills WebSocket connections when the page loses focus. The web controller page detects the dropped socket and auto-reloads to reconnect. If reconnection does not happen, do this:

  1. Tap the page to bring it back into focus.
  2. Pull down to refresh, or close the tab and reopen the URL.
  3. Keep Safari in the foreground while playing. Background-tab WebSockets are not reliable on iOS.
  4. Add the page to the Home Screen as a PWA for a more stable foreground session.

Profile Not Switching Automatically

Auto-profile switching is enabled but PadForge does not switch when the game is in the foreground.

  1. Confirm "Enable auto profile switching" is checked on the Profiles section.
  2. Verify the executable path matches (case-insensitive, full path). Use the file browser button to avoid typos.
  3. For games launchable from multiple locations, separate paths with the pipe character (|).
  4. Add the game's own executable, not the launcher's (Steam, Epic, etc.).
  5. If the game runs elevated but PadForge does not, foreground detection may fail. Run PadForge as administrator.
  6. Save after configuring. Profile data must persist to PadForge.xml.

Sensitivity Curves Not Responding

A sensitivity curve is set but stick or trigger output seems unaffected.

  1. Check the correct axis. X (horizontal) and Y (vertical) have independent curves.
  2. If the preset is "Linear," no modification is applied. Select a different preset or add custom points.
  3. Click Reset to restore Linear, then apply a new preset to verify functionality.
  4. A large deadzone leaves little range for the curve to affect. Reduce the deadzone to test.
  5. Custom control points placed nearly linearly produce no visible change. Spread them further apart.
  6. Per-direction max range settings may cause asymmetric behavior. Review them on the Sticks tab.
  7. Non-default deadzone shapes (Axial, Hybrid, Sloped) interact differently with curves. Try Scaled Radial to isolate the issue.

Steam Controller Conflicts

Controller behaves unexpectedly, is not detected, or rumble stops. Especially Switch Pro or Switch 2 Pro.

  1. Disable Steam Input for the specific controller in Steam > Settings > Controller.
  2. Close Steam entirely if not in use.
  3. Switch 2 Pro Controller. Steam may lock the WinUSB interface. Close Steam before connecting, or disable Switch controller support in Steam.

Buttons Map to Wrong Outputs

Buttons do not match expected positions, trigger two inputs, or produce no input.

  1. Enable Force raw joystick mode on the Devices page to bypass SDL3's remapping.
  2. Re-record all mappings manually with Record on the Button and Axis Mappings tab.
  3. Verify in joy.cpl that buttons work correctly at the Windows level.
  4. Known affected devices: DualShock 3 (DsHidMini SDF mode), certain third-party controllers with non-standard HID layouts.

Force Raw Joystick Mode

Buttons map wrong, trigger double inputs, or shoulder/trigger/stick-click inputs are missing.

SDL3's gamepad mapping does not match the device's HID report layout (common with DS3 + DsHidMini, third-party controllers).

  1. Go to the Devices page.
  2. Select the problematic device.
  3. Enable Force raw joystick mode in the Input Mode section.
  4. Go to the Mappings tab and manually record each button.
  5. Auto-mapping is unavailable in raw mode, but raw indices will be correct.

Mouse or Keyboard Input Issues

Mouse buttons don't register, mouse movement is barely visible, or mouse axes can't be recorded.

  1. Update to the latest PadForge version. Mouse button registration was fixed in a recent update.
  2. Mouse axes show relative deltas, not absolute positions. Fast movements produce larger values.
  3. When recording a mouse axis mapping, move the mouse in the desired direction. Detection is instant.
  4. PadForge does not automatically consume mouse or keyboard inputs. Enable "Consume mapped inputs" or "Hide from games" manually if needed (a warning appears before enabling).

Stick Drift After Calibration

The stick drifts even after setting deadzones.

  1. Go to the Sticks tab.
  2. Leave the stick at rest. Do not touch it.
  3. Click Calibrate Center.
  4. PadForge measures the actual rest position and applies an offset so the deadzone centers correctly.

Volume Macro Issues

Volume changes direction is wrong, or the OSD appears when it should not.

  1. Wrong direction. Enable Invert axis on the volume action settings.
  2. Unwanted OSD. Disable Show volume OSD on the volume action.
  3. Volume not changing. Confirm the trigger fires (see "My Macro Doesn't Fire" above).

Shift Layer Won't Engage

The activator input is set but the layer never turns on.

  1. Check the DelayMs debounce. A high value means the activator has to hold for that long before the layer change fires.
  2. For an Axis activator, the input must cross the threshold. Default is 0.5 of full deflection.
  3. For a Chord activator, both inputs must hold at the same time.
  4. The activator can live on a different physical device than the slot it shifts. Confirm that device is online.
  5. Last engaged wins on conflicts. If a different slot's activator fired more recently, that layer is active instead.
  6. Look at the engaged-layer flyout at the bottom of the screen. If it never appears, the activator never registered the input.

Impulse Triggers Tab Not Visible

The Impulse Triggers tab is missing on a slot you expected to have it.

  1. The tab only appears when the assigned physical pad has trigger motors. Xbox One, Xbox Elite (Series 1 / Series 2), Xbox Series X|S, and DualSense pads have them. Xbox 360 and most third-party pads do not.
  2. The tab is per pad per slot. Pick the right physical device in the assigned-devices dropdown.
  3. For DualSense, trigger pulses route through Adaptive Trigger Vibration. The vibration is gentler than Xbox impulse-trigger motors. Raise the magnitude if it feels weak.

Custom Expression Macro Won't Fire

A Custom Expression macro is set up but the formula never crosses 0.5.

  1. Open the formula editor and watch the live preview value while you press the variable inputs. If the value stays at 0, the variables are not bound correctly.
  2. Each variable needs a recorded input. Click Record on a variable row and press the input.
  3. The macro fires on the rising edge (0 → over 0.5). It does not refire until the value drops below 0.5 and rises past it again.
  4. Boolean inputs (buttons, POV directions) read as 0 or 1. Axes read as 0.0-1.0 by deflection.
  5. Verify the formula syntax. Parse status under the formula box shows ✓ valid or parse error.

Touchpad Overlay Doesn't Drive the DS4 / DualSense Touchpad

The Touchpad Overlay window is enabled but touch input doesn't reach the game.

  1. The overlay drives the touchpad on the assigned PlayStation slot only. Confirm the slot type is PlayStation, not Xbox or Extended.
  2. The slot needs at least one mapped device. The overlay forwards finger contacts. The slot needs to exist for them to land somewhere.
  3. Some touchpad-aware games read the touchpad through the Sony Report 0x01 passthrough. If the slot source is a real DualSense or DS4, that passthrough takes priority over the overlay.

Quick Reference

Symptom Fix
No devices Check USB, cable, Device Manager
Detected but no mapping Assign to slot, check source dropdown
No virtual controller in game Install HIDMaestro / MIDI Services
Double input Install HidHide, enable "Hide devices from games"
BLE controller not hidden Update to PadForge v2.2.1+ for BLE HidHide support
Wrong button mapping Force raw joystick mode, re-record
No rumble Overall Gain > 0%, motor strength > 0%, Test Rumble
Audio bass rumble flat Check audio playing, raise sensitivity
Extended controller not in joy.cpl Install HIDMaestro, verify driver status, restart PadForge
Extended FFB silent Game must send HID PID 1.0 effects, check gain
No MIDI button Install Windows MIDI Services (Win 11 only)
No MIDI output Select "PadForge MIDI N" in DAW input
No motion in emulator Enable DSU server, match port, use 127.0.0.1
DSU port in use Close conflicting app or change port
Web controller disconnected Same network, check firewall, try another port
iOS Safari drops the web controller Keep Safari in the foreground or install the page as a PWA
Profile not switching Verify exe path, enable auto-switching
Sensitivity curve no effect Check axis (X vs Y), preset not Linear
Settings lost Wait for autosave, check file permissions
UAC prompt every launch Expected. PadForge's manifest declares requireAdministrator.
App crashes on start Check SDL3.dll present, .NET 10 installed
High CPU Increase polling interval in Settings
Steam conflict Disable Steam Input or close Steam
Macro doesn't fire All triggers simultaneous, check threshold
Mouse macro not working Check axis source, adjust sensitivity
Always-mode macro won't stop Disable macro or disable slot
Keyboard+Mouse not working Check slot type, add mappings
Mouse buttons not registering Update to latest version
Stick drift after deadzone Calibrate Center on Sticks tab
Volume macro wrong direction Enable Invert axis
Volume OSD unwanted Disable Show volume OSD
DS3 buttons missing Force raw joystick mode, re-record
DS3 rumble not working SDF mode lacks rumble. Use XInput mode
Shift layer won't engage Check DelayMs debounce, axis threshold, activator device online
Impulse Triggers tab missing Slot needs an Xbox One+/Elite/Series or DualSense pad assigned
Custom Expression macro silent Watch live preview value. Rising-edge means it must cross 0.5
Touchpad Overlay no input in game Slot must be PlayStation type. Sony Report 0x01 passthrough may override

Related Pages


Last updated for PadForge 3.2.0.

Clone this wiki locally