DuckStation Controller Setup Guide for Windows (2026)

This post may contain affiliate links. If you purchase through them I may earn a small commission at no extra cost to you.

So you downloaded DuckStation and you're trying to get your controller working. This guide is going to cover Windows only, so if you're on any other platform you'll have to look out for another guide that's coming in the future. Start with the Quick Start, most people are done in less than five steps following it. Everything else here is for when something goes totally wrong or you just want to dive a bit deeper.

Before you do anything else, you need to sort the BIOS. DuckStation is going to need a PS1 BIOS file to be able to run any game, because without it nothing loads regardless of your controller. Your file is going to be named something along the lines of scph1001.bin. To find exactly where DuckStation expects it on your machine, open DuckStation and head to Settings → BIOS and it'll show you the precise folder path right there. Drop your BIOS file in there first, then come back here.

Quick Start, Most Users Start Here

  1. Plug in your controller, then open DuckStation.
  2. Head to Settings → Controllers.
  3. Click Controller Port 1 over on the left sidebar.
  4. Set Controller Type to Analog Controller.
  5. Hit Automatic Mapping and just press any button on your controller when it asks you to.
  6. Load a game and see if it works.
DuckStation Controller Port 1 screen showing Analog Controller selected in the Controller Type dropdown, with all button bindings populated after running Automatic Mapping
What it should look like after Automatic Mapping — every slot filled in and Analog Controller selected
Make sure you read the Analog vs Digital section below before you actually start playing though, because one setting can silently break a pretty large chunk of the PS1 library and it trips up basically everyone the first time, especially if you're new to DuckStation.
Didn't work? Figure out what's going wrong and jump straight to the right section:

Analog vs Digital Mode, The Thing That Breaks Early Games

This is the number one thing that will trip up a new DuckStation user. You load up a game, press a button, and nothing happens, but your controller works pretty much everywhere else. Your game might show a message or it can just sit there completely frozen. So here's why.

The DualShock didn't exist until late 1997, so a large portion of the PS1 library, especially anything from the first two or three years, was built for a digital-only pad. When DuckStation is set to Analog Controller mode and you load one of these older games, the game picks up on the analog type and either asks you to disconnect it or just decides to stop reading it entirely. This isn't really a bug, it's just how those games were programmed back then.

The fix is literally one setting: Controller Port 1 → Controller Type.

DuckStation Controller Type dropdown open showing all controller options including Digital Controller and Analog Controller
The Controller Type dropdown — this is the one setting that fixes it
Default, Use This For Most Games

Analog Controller

Keep this as your global default. It's going to cover pretty much everything that shipped with DualShock support, Metal Gear Solid, Gran Turismo, Silent Hill, Final Fantasy VII through IX, Spyro, Crash Bandicoot: Warped, Tomb Raider II onwards, Resident Evil 2 and 3, Castlevania: Symphony of the Night. Anything from 1998 onwards is almost certainly going to be fine here.

Switch To This If Buttons Do Nothing

Digital Controller

You'll want this for games that predate DualShock support entirely: the original Resident Evil, Wipeout, Crash Bandicoot 1, the original North American release of Crash Bandicoot 2, Twisted Metal 1 and 2, the original Tomb Raider, Mega Man Legends 1. If you're loading a game and pressing buttons is doing absolutely nothing, head to Controller Port 1 → Controller Type, flip it to Digital Controller, and reload the game. That's going to fix it the vast majority of the time.

You don't have to keep switching this manually every single time. The Per-Game Overrides section further down shows you how to just lock individual games to Digital Controller permanently so the switch happens on its own whenever that game loads.

Xbox Controller Setup

If the Quick Start worked for you, just skip this. If your Xbox controller isn't being detected, open this up.

Xbox Controller, Full Setup Steps

Make sure your controller is plugged in before you open DuckStation. If it still isn't being detected, just close DuckStation, make sure the controller is connected, and reopen it.

Head to Settings → Controllers. DuckStation has SDL turned on by default and SDL handles Xbox controllers natively, so you don't actually need to change anything in Global Settings here.

Click on Controller Port 1 in the left sidebar. Set Controller Type to Analog Controller and then hit Automatic Mapping and press any button when it prompts you. Just leave Port 2 set to Not Connected unless you're setting up for two players.

✓ Here's how you know it worked: after Automatic Mapping every slot in the binding list should have an input showing, Cross, Circle, Square, Triangle, both analog sticks, all four shoulder buttons, D-pad directions. If most of those slots are still empty, try unplugging the controller, plugging it back in, and running Automatic Mapping again.
If one specific button ended up on the wrong input, just click that slot and press the correct button on your controller to fix it. You don't have to redo the whole thing.

PS4 / PS5 Controller Setup (DualShock 4 and DualSense)

DuckStation actually has built-in support for the DualShock 4 and DualSense through SDL, including vibration over Bluetooth, so most people aren't going to need any extra software at all. Try the simple path first, and if it works you're basically done.

  1. Plug your controller in via USB or pair it via Bluetooth.
  2. Open DuckStation and go to Settings → Controllers → Global Settings.
  3. Make sure Enable SDL Input Source is checked, it should be on by default.
  4. Also check DualShock 4 / DualSense Enhanced Mode, this one is off by default so you need to actually turn it on. That's what enables full vibration and LED support.
  5. Click on Controller Port 1, set Controller Type to Analog Controller, and hit Automatic Mapping.
DuckStation Global Settings screen showing Enable SDL Input Source checked and DualShock 4 / DualSense Enhanced Mode unchecked by default, ready to be enabled
Global Settings — SDL is on by default, Enhanced Mode needs to be turned on manually
✓ Here's how you know it worked: every slot in the binding list should show something, Cross, Circle, Square, Triangle, both sticks, all the shoulder buttons. If most of it's empty, try USB instead of Bluetooth first, and double check that SDL is actually enabled in Global Settings.
If one button landed on the wrong input, just click that slot and press the right button to reassign it. You don't need to redo the whole mapping.

If your buttons are responding, vibration is working, and you're not getting any double inputs, you're done here.

Fix Double Inputs: DS4Windows + HidHide, Only open this if you're having problems
Only go through this if your buttons are registering twice, inputs feel totally off, or Steam is messing things up in the background. If the simple path above worked fine for you, you can skip this entire section.

The double input thing happens because Windows is seeing both your real controller and a virtual one at the same time. To fix it you need two free tools from ds4-windows.com: DS4Windows, which creates and manages the virtual controller, and HidHide, which hides your real controller from everything except DS4Windows so only one shows up.

Go through these in order, the order actually matters here.

  1. Install HidHide first. Grab it from ds4-windows.com, run the installer, and restart your PC when it asks you to.
  2. Install DS4Windows. Also from ds4-windows.com. When it launches for the first time it'll ask you to install the ViGEmBus driver, just go ahead and do that.
  3. Connect your controller via USB for this part of the setup, even if you're planning to use Bluetooth normally. It's just more reliable for getting HidHide configured.
  4. Your controller should show up in DS4Windows on the Controllers tab. If it doesn't, try a different USB port.
  5. Fully close DS4Windows now, not just minimized, actually closed. HidHide needs to only see your real physical controllers, and if DS4Windows is still open its virtual controllers are going to show up in the list and make things confusing.
  6. Open the HidHide Configuration Client, it installs as its own separate app so look for it in your Start menu.
  7. On the Devices tab you'll see a list of connected controllers. Find yours, it'll be named something like Wireless Controller or your specific model name. Check the box next to it. Don't check anything that says Virtual or Xbox 360 Controller, those are DS4Windows outputs and hiding those will break everything.
HidHide Configuration Client Devices tab showing a HID-compliant game controller entry checked, with Filter-out disconnected, Gaming devices only, and Enable device hiding all enabled at the bottom
Your controller checked in the list with all three options enabled at the bottom — yours might show a different name than HID-compliant game controller, that's totally normal
  1. Switch to the Applications tab, click the folder icon, and browse to your DS4Windows.exe file and add it. That's basically telling HidHide that DS4Windows is allowed to still see the hidden controller even though nothing else can.
  2. Go back to the Devices tab and enable the Enable device hiding checkbox at the bottom. Then close out of HidHide.
  3. Open DS4Windows back up. Your controller should be showing on the Controllers tab with a little key icon in the Ex column. That key icon means HidHide is working and everything's set up correctly.
  4. Now head into DuckStation, go to Settings → Controllers → Global Settings. SDL should already be on. Go to Controller Port 1, set it to Analog Controller, and run Automatic Mapping.
No key icon showing up in the Ex column? Something else grabbed the controller connection before DS4Windows could, and that's usually Steam, a browser, or Nvidia's overlay running in the background. Close all of those, unplug your controller, reopen DS4Windows, then plug it back in. If Steam is the culprit specifically, go to Steam → Settings → Controller and turn off PlayStation controller support, then restart Steam before trying again.
Planning to use Bluetooth? Your controller is going to show up twice in HidHide's Devices list, once for USB and once for Bluetooth. You need to check both of those entries. Just pair via Bluetooth, open HidHide back up, and check the Bluetooth entry the same way you did the USB one.

Other Controllers

Logitech pads, cheap Amazon controllers, USB adapters, old PC gamepads, that kind of thing.

Generic / Off-Brand Controller Setup

Plug your controller in before you open DuckStation. Once it's open, go to Settings → Controllers → Global Settings. SDL is on by default and handles most modern stuff just fine. If yours isn't showing up, try enabling DirectInput as a fallback, it's basically there specifically for older hardware that doesn't play nicely with modern standards.

After that just go to Controller Port 1, set Controller Type to Analog Controller, and hit Automatic Mapping.

✓ How you know it worked: the binding list should have inputs showing across most of the slots. Generic controllers often miss a few of them though, analog stick axes in particular tend to need manual binding. If a slot is empty just click it and press or move the corresponding input on your controller to fill it in.
Controller still not showing up at all? Try a different USB port. You can also open Windows Device Manager (just search Device Manager in the Start menu) to see if Windows is even detecting it. If it shows up there but not in DuckStation, enable DirectInput in Global Settings and try Automatic Mapping again.
Vibration often just doesn't work through DirectInput on modern versions of Windows. That's a limitation of the legacy standard itself, not anything DuckStation is doing wrong.

Steam Input Warning

If Steam is open and your controller is acting up, double inputs, wrong buttons firing, not being detected at all, this is almost certainly why.

Steam Input, What It Is and How to Turn It Off

Steam has its own controller management layer called Steam Input and it automatically activates for basically any controller it recognizes, Xbox, PlayStation, Switch, all of them. The thing is it runs system-wide, not just for games you actually launch through Steam. So it's just sitting between your controller and everything else on your PC whether you want it to or not.

Common things you'll notice if Steam Input is interfering: buttons registering twice, the wrong buttons firing, analog sticks behaving like a mouse cursor, or DS4Windows losing its HidHide connection for seemingly no reason.

Global fix: go to Steam → Settings → Controller and turn off controller support for whatever controller type you're using.

Per app fix: if you've added DuckStation as a non-Steam game, you can right-click it → Properties → Controller → Disable Steam Input and that'll just turn it off for DuckStation specifically without affecting anything else.

After you change anything in Steam Input settings, unplug your controller and plug it back in before opening DuckStation. Steam sometimes holds onto the connection until you physically reset it.

Hotkey Mapping

Set these up so you can do save states, fast forward, and get into the pause menu without having to touch your keyboard every time.

Hotkey Setup, Recommended Bindings

Head to Settings → Controllers → Hotkeys. Click any empty slot and just press whatever button combination you want to assign to it. Using L3 (pressing the left stick down) as a modifier is a pretty solid approach since nothing in the PS1 library actually uses L3 as a primary input, so you're not going to accidentally trigger anything during gameplay.

Action What to Bind It To What It Does
Open Pause Menu L3 + R3 This opens DuckStation's in-game overlay where your save states, settings, cheats, and disc swap options all live. It's not the same thing as just pausing the game.
Quick Save L3 + R1 Saves to whatever state slot you currently have selected, instantly.
Quick Load L3 + L1 Loads from your current state slot instantly. Just be aware this can't be undone, so when it actually matters use the Pause Menu to load instead since it'll show you a preview of each slot before you commit.
Save State Slot + Assign as needed Cycles through your save state slots. Worth setting up so you can use multiple slots, one for regular checkpoints, one right before a boss, one as a backup. You'll find it under Save State in the Hotkeys list.
Fast Forward L3 + R2 Hold it down to speed things up. Really useful for loading screens and long cutscenes. It does push your CPU harder though so if you're on a weaker machine it might cause some stuttering.
Toggle Analog Mode L1 + R1 Flips between Analog Controller and Digital Controller on the fly without having to go back into settings.
DuckStation handles button combinations natively, so binding something like L3 + R1 to Quick Save isn't going to cause L3 by itself to trigger anything. You don't have to worry about accidental presses.

Per-Game Overrides

This is how you lock specific games to Digital Controller permanently so you never have to manually switch every time you load one up.

How to Set Per-Game Controller Settings

Per-game settings need a game list to work, you can't do this if you're just loading ROMs one at a time through File → Open. To get a game list going, head to Settings → Game List → Add Game Directory and point it at whatever folder your PS1 games are sitting in. DuckStation will scan it and build the list out for you.

  1. Right-click on a game in your game list.
  2. Click Properties.
  3. Go to the Controller Settings tab.
  4. Turn on Per-Game Configuration at the top of that tab.
  5. Set Controller Type to Digital Controller.

Takes about two minutes per game and then you literally never have to think about it again.

Troubleshooting

Controller isn't being detected

Try closing DuckStation, make sure the controller is actually connected, and reopen it. If it's still not showing up, head to Settings → Controllers → Global Settings and check that SDL is enabled. If you're on a Sony controller also check that DualShock 4 / DualSense Enhanced Mode is turned on. For generic hardware try enabling DirectInput. And if Steam is open in the background, that might be intercepting your controller before DuckStation even sees it, so check out the Steam Input section above.

Buttons do nothing in-game

This is almost always an analog versus digital mismatch. Right-click the game in your list, go Properties → Controller Settings, enable Per-Game Configuration, and set Controller Type to Digital Controller. If the game came out before late 1997 that is almost certainly your fix. If you loaded the game through File → Open instead of from a game list, just go change the global Controller Type directly on Controller Port 1 instead.

Wrong buttons firing or inputs behaving strangely

Steam Input is pretty much always the cause of this one. Go to Steam → Settings → Controller and turn off support for your controller type. If you've added DuckStation as a non-Steam game you can also right-click it, go Properties → Controller → Disable Steam Input to just turn it off for DuckStation specifically. Then unplug and replug your controller.

Every button press registers twice

Windows is seeing both your real controller and a virtual one at the same time, either from Steam Input or from DS4Windows. For Steam: turn off PlayStation controller support under Steam → Settings → Controller. For DS4Windows: you need to go through the HidHide setup in the PS controller section above. If you're on Bluetooth, also remember your controller shows up twice in HidHide's device list, once for USB and once for Bluetooth, and both entries need to be checked.

Analog stick drifts or moves by itself

Head to Controller Port 1, find the stick binding, and set the Deadzone somewhere between 5 and 15 percent. That creates a little null zone at the center of the stick's range that just ignores small unintentional movement. If it's still drifting badly after that, it's probably a hardware issue. Cleaning around the base of the stick with a bit of isopropyl alcohol is worth trying before you commit to sending it in for a repair.

Input feels delayed or sluggish

Two things to try, in this order. First, go to Settings → Emulation and turn on Runahead set to 1 frame. That compensates for the input delay that was actually built into the original PS1 hardware. Just be aware that Runahead does push your CPU a lot harder, so if your machine is already struggling it might make things worse rather than better, just turn it back off if that happens. Second thing: turn Vsync off. It adds a full frame of lag on top of everything else. If you've got a G-Sync or FreeSync monitor, disable Vsync inside DuckStation and let your GPU driver handle the frame timing instead.

Wireless controller stutters or drops inputs

Bluetooth shares the 2.4GHz band with Wi-Fi, microwaves, and pretty much every other wireless device in your space, so all that congestion can cause jitter where your inputs arrive late or just don't register. Go wired if you can. If you can't, use a dedicated 2.4GHz adapter instead: the official Xbox Wireless Adapter for Xbox controllers, or the 8BitDo Ultimate 2.4G which ships with its own USB dongle. Both of those use proprietary protocols and are way more stable than standard Bluetooth.

No vibration

Three things to check, in order. First: Controller Type needs to be set to Analog Controller because Digital Controller has absolutely no rumble support at all. Second: if you're on a Sony controller going through SDL, make sure DualShock 4 / DualSense Enhanced Mode is checked in Global Settings. Third: try USB instead of Bluetooth, rumble over Bluetooth can be pretty unreliable depending on your specific setup.

Fast Forward is making the game stutter

Fast Forward and Runahead both put a pretty significant load on your CPU, and running them at the same time is the most demanding combination you can have. If Fast Forward is causing stuttering, the first thing to do is turn Runahead off if you have it enabled, that alone should sort it out.

Shopping for a Controller?

If you've already got a controller, just use it. This is only for people looking to buy something new specifically for DuckStation.

Controller Recommendations, What's Actually Worth Buying

Xbox Series X/S Controller

Best for Beginners

Setup: plug it in and it just works. No extra software needed at all.

DuckStation's SDL picks it up immediately and Automatic Mapping handles the rest. The D-pad is clicky and precise which really matters for 2D PS1 games. The only real adjustment is the button labels, A/B/X/Y instead of cross/circle/square/triangle, which takes a little getting used to if you grew up on PlayStation. For wireless, the official Xbox Wireless Adapter is noticeably more stable than just using regular Bluetooth.

Sony DualSense (PS5)

Best Layout

Setup: SDL with Enhanced Mode turned on. DS4Windows only if Steam is causing conflicts.

The symmetrical stick layout mirrors the original DualShock exactly and it just feels more natural for PS1 games than the offset layout on an Xbox controller. DuckStation's Enhanced Mode gives you full vibration and LED support over both USB and Bluetooth. If Steam isn't interfering, the simple SDL path really is all you need here.

DualShock 4 (PS4)

Budget Pick

Setup: same deal as the DualSense, SDL with Enhanced Mode.

Same symmetrical layout as the DualSense, just at a lower price point, especially if you're grabbing one used. If you've already got one sitting around there's really no reason to upgrade just for DuckStation. If you're buying new though, the DualSense is worth the extra money for the better polling rate.

8BitDo Pro 2

Multi-Device

Setup: XInput mode is plug-and-play. Other modes might need some manual remapping.

PlayStation-style symmetrical layout with a physical mode switch on the back. Works across Windows, Android, and Steam Deck which is great if you play on multiple devices. One thing to know before you connect it on Windows: check that the physical switch on the back is set to X for XInput, because forgetting to do that is by far the most common reason this controller doesn't get detected. Switch Mode can also invert your face buttons so just stick to XInput mode on Windows.

Short version: got a PS4 or PS5 controller already? Plug it in, turn on Enhanced Mode in DuckStation, and you're probably done. Starting from nothing? Get the Xbox Series controller, zero extra setup required.

That's It

Controller mapped, analog mode sorted, hotkeys set. DuckStation gets out of the way from here and the only thing left is actually playing something.

Drop any questions in the comments. If the PS1 raised you, subscribe to The Save Room, we cover the games, the emulation, and everything in between.

← Back to Home All Posts

No comments:

Post a Comment