XaiJu
blackseraph
blackseraph

patreon


Duo 1.5.2 is now available (Better Steam Support)

Proper Multi-User Steam Support

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.

Improving HID isolation (as much as possible)

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:

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.

Bugfixes (a whole lot of them)

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:

A whole new user interface

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.

Merging the Patreon & GitHub builds

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.

Getting Duo

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:

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.

Duo 1.5.2 is now available (Better Steam Support)

Comments

Thank your for your effort. A quick question for the gamepad. I sometime encountered my joystick out of function in a game, such as asphalt8. When this happened, I need to close the game and restart it, then the gamepad works again. Any suggestion?

phix

Thank you so much for your work!

Antonio Ruzin

Thank you for your work

Dmitri Moskalenko

Hi, I just join your $10 membership, but on Duo Manager it says I have not donated the $10 minimum lol

Diego

Hi! I tried to get running Duo through WAN but I can't access my VM with Moonlight, nor through LAN neither WAN. But I started the container, I enabled Persistent Storage, I assigned 80% of my 16 GB of RAM, and I connected my PC with Ethernet

Matías Martín Diez

https://github.com/DuoStream/Duo/issues/247

Konrad Morawski

Now, when I run Steam in a sandboxed instance it says I am missing files: VCRUNTIME140.DLL and MSVCP140.DLL. Any ideas?

Bronson Taylor

The new UI is quite sexy. I like it very much! 🤩 But I am curious. It looks like the UI of Task-Manager and the Settings app, but differs slightly in some areas. Could you actually use standard UI components from Windows or have you rebuilt the app in the appearance of these programs? I also appreciate the work done for allowing Steam to be used in a multi-user setup. Without that, Duo would be hardly that useful anymore.

The Mad Wizard


More Creators