One of the biggest hurdles Duo has faced repeatedly is dealing with globally exclusive applications like Steam.
Until now, we had been using a known hidden Steam command-line parameter to work around this issue. However, a recent Steam client update broke this option, which forced us to develop our own multi-user solution for Steam.

Now, all multi-user interactions with Steam are managed by DuoSteam.dll, which sandboxes CEF caches and global objects within their corresponding sessions.

We've discussed Microsoft's driver signature requirements many times, and those who have been following along know that these requirements prevent us from perfecting HID isolation support.
At this point, we use a combination of event arrival callbacks and the DEVPKEY_Device_SessionId attribute to move HID devices into their appropriate sessions, as these are the only methods accessible to us in user-space processes.
However, these callbacks take some time to process (50–200ms), giving processes a window to open device handles before the SessionId attribute is set.
This delay results in what users notice as HID device bleed, where one session's HID input devices—typically those from the console session—affect processes in another session.
Given how essential this feature is to Duo's core functionality, I've spent a significant amount of time refining it to achieve the best possible results with the tools available to us.
As part of my research, I've identified three avenues for improvement:
Walking the SYSTEM-only registry keys for faster node processing rather than waiting for the system to provide data via callbacks. While not a guaranteed solution, any reduction in processing time helps shrink the window of opportunity for HID device bleed.
Disabling Windows' ControllerToVKMapping, as it ignores the DEVPKEY_Device_SessionId attribute entirely, leading to unavoidable HID device bleed in UWP-based applications.
Implementing a BluetoothUserService wrapper to prevent per-session Bluetooth driver stack resets, which previously caused Bluetooth HID devices to malfunction.

This new Duo build incorporates all three improvements, which, in my opinion, leaves us with no further feasible enhancements for HID isolation—aside from implementing our own kernel filter driver. However, doing so would require access to Microsoft's hardware developer dashboard for driver signing.
First of all, thank you to everyone who submitted issues—especially one anonymous hero who spent countless nights burning the midnight oil with me, tandem-debugging some of the nastier problems.
You know who you are. You're awesome.
As a result, we now have the following rather lengthy list of bug fixes:
Fixed a service start issue
Fixed a sandbox start issue
Fixed a sandbox stop race condition that caused RTSP errors on subsequent instance starts
Fixed a screen tearing issue caused by the display driver
Fixed a framebuffer mix-up between sessions that occured when a newly spawned session received an out-of-order session ID
Fixed an issue with host-connected Bluetooth devices
Fixed an issue with passwords containing special symbols
Fixed a user authentication issue that prevented instance starts
Fixed the ms-gamebar error message in sandboxed instances
Fixed an issue that caused the setup window to slip behind other open windows
Epic Games installed in non-standard directories now get passed through into the Sandbox (but without their install manifest)
Fixed a ViGEmBus sandbox installation error
Removed unnecessary ViGEmBus architectures
Fixed a cloudflare related navigation error
So much work went into Duo's backend that, at the end of the day, I simply didn’t have enough time to give its frontend the same level of polish—and it showed.
The nicest way to describe Duo's user interface was 90s-inspired, but archaic might have been a more accurate word.
There’s no way to sugarcoat it—it needed a fresh coat of paint.
And that’s exactly what it got.

When I first released Duo, I promised that users would be able to enjoy their benefits continuously, regardless of whether they remained subscribed.
However, when the Windows 11 24H2 Update dropped, we encountered a Side-by-Side Store corruption issue caused by a piece of code in Duo 1.4.8.
This code had worked flawlessly up to 23H2 but failed catastrophically with 24H2.
As a result, some former patrons were left stranded with Duo 1.4.8 installers—which they needed to unlock their benefits—but couldn't use because they were incompatible with 24H2.
Initially, I distributed updated Patreon builds to affected users manually, but that was only a temporary fix.
To resolve this issue once and for all—and to prevent similar problems in the future—benefits are now unlocked via OAuth2. This means that upgrading users will need to log into their Patreon account via the new Duo Manager application at least once to unlock their benefits.

This approach allows me to merge the builds, making GitHub releases checksum-identical mirrors of their Patreon counterparts. As a result, patrons—both current and former—will have permanent access to the latest full installer, regardless of whether they choose to support me long-term.
All builds of Duo, dating back to the initial release, can be found in its original release post as well as its GitHub page.
The following benefits can be unlocked by logging in with a Patreon account that has contributed a total of $10 or more to my campaign over its lifetime:
Access to additional instances
Unlocked refresh rates (up to 500Hz)
HDR support
Sandbox support
Builds that are not linked to a Patreon account are limited to a single native SDR instance with a maximum refresh rate of 30Hz, which should be sufficient for most casual users.
If this is your first time using Duo, I recommend checking out our Wiki to help you get started.
phix
2025-04-30 14:26:55 +0000 UTCAntonio Ruzin
2025-04-27 22:33:44 +0000 UTCDmitri Moskalenko
2025-04-21 11:07:34 +0000 UTCDiego
2025-04-07 04:33:25 +0000 UTCMatías Martín Diez
2025-03-30 22:57:54 +0000 UTCKonrad Morawski
2025-03-19 14:15:11 +0000 UTCBronson Taylor
2025-03-18 13:53:16 +0000 UTCThe Mad Wizard
2025-03-18 11:04:28 +0000 UTC