Skip to content

Debugging the Drivers

Kernel and user-mode drivers do not write log files to disk. Instead they use Event Tracing for Windows (ETW), which you capture from the command line using etwutils.

Prerequisites

Install the .NET SDK

etwutils is a .NET global tool and requires the .NET 8, 9, or 10 SDK (not the runtime-only install) on Windows.

Download it from dot.net and run the installer. Once done, open a new terminal and verify:

PowerShell

dotnet --version

Install etwutils

Administrator required

ETW session creation requires an elevated process. Open PowerShell as Administrator for all commands in this guide (press Win+X and choose it from the menu).

PowerShell (as Administrator)

dotnet tool install -g Nefarius.Utilities.ETW.CLI

This makes the etwutils command available on your PATH. For full installation details see the etwutils README.

Make sure you are on the latest v3.x release

Update before capturing

The etwutils capture commands below use the Nefarius public symbol server to automatically download the PDB file that matches your installed driver. If your DsHidMini installation is outdated or mismatched, symbol resolution will fail and every event will appear as a meaningless GUID=... placeholder — making the trace useless.

Before proceeding, make sure you have the latest v3.x release installed. Head to the DsHidMini releases page and follow the installation guide if you need to update.

Enable verbose tracing

By default, verbose tracing is off. You need to enable it once by importing a registry file and then rebooting.

  1. Download and run dshidmini_debug.reg — double-click it and confirm all message boxes.

  2. Reboot the machine before continuing.

Alternative: enable via etwutils

Instead of the .reg file, you can enable verbose tracing from an Administrator PowerShell with a single command:

PowerShell (as Administrator)

etwutils verbose dshidmini enable --type umdf

Either approach has the same effect. You only need to do this once — later trace sessions do not require another reboot or re-import.

Step 1 — Quick live test (validate decoding first)

Before capturing to a file, confirm that the setup is working and that events are properly decoded.

In an Administrator PowerShell, run:

PowerShell (as Administrator)

etwutils realtime --driver dshidmini --symbol-server https://symbols.nefarius.at/download/symbols --format plain

On first run etwutils will download the matching dshidmini.pdb from the Nefarius symbol server and cache it locally — subsequent runs start immediately from cache.

Now plug in your DS3 controller. You should see human-readable lines scrolling in the terminal similar to:

2026-05-26T14:51:23.1234567+02:00    DsHidMiniTraceGuid    TRACE_LEVEL_INFORMATION    Device arrived: USB\VID_054C&PID_0268
2026-05-26T14:51:23.5678901+02:00    DsHidMiniTraceGuid    TRACE_LEVEL_VERBOSE          ConnectRequest: handle=0x0003

Do not continue if you see GUID placeholders or no output

If the terminal shows lines like GUID={xxxxxxxx-...} instead of a friendly provider name and readable messages, symbol resolution failed. Go back and verify your DsHidMini installation is up to date.

If you see no output at all after plugging in the controller, verbose tracing may not have been enabled yet — confirm you ran the .reg import (or etwutils verbose) and rebooted.

Only continue to Step 2 once you see properly decoded events here. Take a screenshot of this output to share if you are reporting an issue.

When you are done confirming, press Ctrl+C to stop the session.

Step 2 — Capture a trace to a file

Once Step 1 shows correctly decoded events, stop the live session (Ctrl+C) and run the same command redirected to a file:

PowerShell (as Administrator)

etwutils realtime --driver dshidmini --symbol-server https://symbols.nefarius.at/download/symbols --format plain --color never > C:\TEMP\events.tsv

Leave the terminal open and reproduce the problem you are trying to investigate. Once you have captured the relevant behaviour, press Ctrl+C to end the capture.

The resulting events.tsv file can be quite large. Compress it with 7-Zip or WinRAR before sharing it.

Trace file contents

The trace file may contain device identifiers needed for debugging. Share it securely and only with trusted recipients.

Troubleshooting

Session resource error

If etwutils exits immediately with a resource or access error, a previous session may not have been cleaned up (e.g. after closing the terminal without pressing Ctrl+C). Clean up any leftover sessions with:

PowerShell (as Administrator)

etwutils sessions clean

Then try the capture command again.