Home Artists Posts Import Register

Downloads

Content

What is Duo?

Duo is an HDR-compatible, headless, bare-metal, multi-seat streaming server based around RdpWrap, Sunshine, Moonlight and a variety of custom drivers & libraries.

You can think of it as a version of Sunshine that allows multiple users to use the same computer at the same time without occupying the computer's physical session or otherwise interfering with each other.

Each session's resolution, refresh rate, scaling and dynamic range are controlled directly via Moonlight.

The typical "1 PC, multiple users" scenario that we all know and love.

Duo (native) versus Castor (virtualized)

Those that have been supporting me for a while might remember Castor.

Castor is another piece of software I provide over here on my Patreon that too serves the purpose of sharing a single computer with multiple users, but goes about it in a different way.

While Duo lets multiple users share the same physical computer using a combination of custom drivers & libraries, Castor creates a new virtual computer for every user, including all of the overhead that comes with that.

Possible use cases

Empowering your handheld device

You own a handheld device that can't handle the latest games, but still want to play them?

Start a Duo instance on your gaming computer, connect to it, and play that game, all while still being able to use your computer normally.

Sharing your gaming hardware with friends or family

Your friend / family member doesn't own a decent enough computer but you do?

Start a Duo instance on your gaming computer, let them connect to it, and play that fancy multiplayer game together that they just can't run right.

Hosting your own cloud gaming server

Enable UPnP on your router, toggle the according setting in your instance's admin panel and your computer is now reachable anywhere in the world.

Getting started with Duo

Setup Guide

A step-by-step guide on how to get started with Duo.

Troubleshooting

A list of frequently asked-about issues and how to resolve them.

Known Issues

A list of known issues that we really can't do all too much about due to technical limitations.

Changelog

Version 1.4.3

  • Improved the RdpWrap.ini updater

  • Updated built-in RdpWrap.ini

Version 1.4.2

  • The scale factor adjustment range has been changed to 50~200%

Version 1.4.1

  • Fixed a memory leak in Duo.exe

Version 1.4.0

  • Fixed a hook timing issue

  • Fixed a bug in the termsrv.dll version reader

  • Disabled some no-longer-needed debug messages

  • Updated built-in RdpWrap.ini

Version 1.3.9

  • Updated Sunshine (fixes pairing issue)

  • Updated built-in RdpWrap.ini (adds support for Windows 11 10.0.22621.2080)

Version 1.3.8

  • Inlined RdpWrap

  • Inlined aardwolf

  • Inlined TaskScheduler

  • RdpWrap.ini updates are now automated

  • Instances can now recover from adapter errors

  • Instances can now be started & stopped on-demand via a WebUI

  • Removed no-longer-needed python dependency

  • Reduced service & session startup time

  • Updated Duo Manager

  • Updated Sunshine

Version 1.3.7

  • Improved capture performance

  • Fixed an issue that corrupted instance setting files after web admin panel configuration changes

Version 1.3.6

  • The UI scale factor can now be adjusted with a multiplier (0.13888 * height * multiplier)

  • Removed unneeded python components

Version 1.3.5

  • Memory integrity is now disabled (to ensure RdpIdd.dll & IddCx.dll can be patched properly)

Version 1.3.4

  • Updated Sunshine

  • Duo's unlock status is now visible in the title bar (as a + symbol in the version number)

  • Duo's revision number has been removed from the title bar

  • The web admin panel button now doubles as an online indicator

Version 1.3.3

  • Duo can now spawn multiple instances of Steam out-of-the-box (see assets\apps.json)

Version 1.3.2

  • Added support for Windows 10 21H2

  • Network Level Authentication is now force-enabled

  • Render adapters are now chosen based on their available dedicated video memory

  • Instances linked to expired user passwords will now be skipped

  • Left-over python processes are now being detected & garbage-collected

Version 1.3.1

  • Added support for Windows 10 22H2

  • Scale factors are now notched to 25% increments

  • Improved the display configuration change response time

  • Improved the instance start time

  • Fixed a rare black screen error

  • Fixed a session join error

  • Fixed a session stop error

Version 1.3.0

  • Fixed an issue with UI scaling at sub-720p resolutions

Version 1.2.9

  • Fixed a gamepad isolation issue

  • Resolution, refresh rate, scaling and HDR can now be controlled via Moonlight

  • The version number is now visible in Duo Manager

Version 1.2.8

  • Improved gamepad isolation

  • Removed no-longer-needed libraries

  • Passwords are now hidden

  • Instances can now be disabled

  • Each instance has its own application list now

Version 1.2.7

  • Fixed several input issues

Version 1.2.6

  • Improved capture performance

Version 1.2.5

  • Fixed the XBOX360 gamepad mode

  • Fixed a screen tearing issue

Version 1.2.4

  • Optimized frame capture performance

  • Reworked gamepad isolation algorithm

Version 1.2.3

  • Fixed a framedrop issue

  • Fixed a desktop render glitch

  • Fixed a gamepad isolation bug

Version 1.2.2

  • Optimized the framebuffer capture code

  • Optimized the service start code

Version 1.2.1

  • Implemented PnP device redirection (deprecating HIDHide)

  • Implemented a physical HID device watchdog

  • Moved WTS API calls into their own subprocesses (to work around a known API issue)

  • Fixed several instance start errors

Version 1.2.0

  • Added HDR support

  • Updated Sunshine

  • Fixed two instance start deadlocks

  • Fixed custom scale factors (again)

  • Rewrote RdpIdd.dll & IddCx.dll patches so that Windows Update can't break them anymore

Version 1.1.1

  • Fixed a service shutdown deadlock

  • Fixed a desktop scaling issue

  • Fixed animated mouse cursors

  • Fixed monochrome mouse cursors

  • Fixed mouse cursor scaling

  • Optimized mouse cursor blending

  • Increased the default log verbosity

  • Raised minimum system requirements to Windows 11 23H2 (in preparation for HDR support)

Version 1.1.0

  • HidHide segregation code is now more resilient

  • Physical devices now get jailed to the active WTS console session on Sunshine ViGEmBus callback invocation

  • Virtual DS4 gamepads now get jailed properly

Version 1.0.9

  • Automatically enables HidHide cloaking when required now

Version 1.0.8

  • Updated Sunshine

  • Removed sunshinesvc.exe (Duo doesn't need it)

  • Gamepad segregation is now provided via ViGEmBus & HidHide (no longer experimental)

Version 1.0.7

  • Removed version update message (as Duo isn't compatible with upstream Sunshine)

  • Sunshine applications now launch in the right user session

  • I had to re-upload this one because Windows Defender ate a file (please re-download & re-install if your Duo service refuses to start)

Version 1.0.6

  • Fixed an issue with spaces in usernames

Version 1.0.5

  • Fixed an issue that affected Windows 11 Home Edition

Version 1.0.4

  • Fixed desktop scaling (after KB5030310 broke it)

Version 1.0.3

  • Fixed the software encoder's video format settings

  • Removed the DXGI test code as its no longer needed

Version 1.0.2

  • Added support for Microsoft's new IddCx20 API

Version 1.0.1

  • Added support for KB5030310 (23H2 Preview)

Version 1.0.0

  • Initial release

Downloads

Files

Comments

ihazcat

hey man. seriously. i'm awaiting for your 2.0 release cause my 35xx and 353m are aching for that. or at least share language file if it's ready for translation.

blackseraph

GarlicOS 2.0 is in the works, let's take things one step at a time and try not to mix up the comment sections up.

blackseraph

Well, behind the scenes its being ported to countless additional devices while I focus down two specific devices (RG405M being one of them) to iron out the last remaining bugs.

Jacob

How’s the performance like running two instances of pretty demanding games like BG3 for example? I have a 4090 and 5900x but run Arch as my daily driver and it works for most games much fine. I’ll try this on my windows install eventually :P

Nexxus_D

I joined for Castor and now im seeing DUO the the benefits. Best sub i've made imo. Will test things thouroughly on a fresh windows build.

Tim Norris

I hate that this is pay-walled as it's such a great project but I tried it anyway. Compared to running a single instance of Moonlight, the performance was abysmal. Not sure if that's something that will change in the future but it was unusable even with just one session.

blackseraph

Funny you mention that. My wife and I play two instances of BG3 on a similar setup just fine (because the built-in split screen mode is bugged). To be more specific: 1x BG3 at 4K@60Hz and 1x BG3 at 800p@60Hz (Steam Deck), both instances at max settings.

blackseraph

If you don't need full on segregation of machines then Duo is the way better solution here btw. The reduced overhead really shows.

blackseraph

Not sure what your setup is but I'm running multiple sessions just fine, one of them being 4K@60Hz.

Eric

First, just want to say that this is a great app, works very well so far. One issue I’m encountering is that while streaming to an iPad using JoyCons I can play games fine, input works as expected. But, I’m unable to use any mapping software to set custom keys or shortcuts as the JoyCons aren’t recognized in the mapping app, so I’m unable to exit most emulated games. Any help would be awesome, this is already 99% perfect for my use case.

blackseraph

I'm sorry I can't help you much with iPad related things as I don't own any Apple products myself. I'm entirely unfamiliar with what options Apple users have available on their ecosystem (or not), but I know that for Android there is a on-screen keyboard one can install by the name of "Hacker Keyboard". Unlike regular on-screen keyboards like GBoard this one features a full-fledged 100+ key layout including ALT+TAB, Windows key, etc. which makes quitting stuff quite easy.

Eric

Thank you for the reply. I don’t think it’s an issue with iOS/iPadOS, it’s just the remapping app not recognizing the JoyCons in the instance Duo creates. I know I’ll figure out a workaround, and I’ll post an update when I do. Again, this app is really great, solves so many problems.

Aaron Gee

Thanks very much for this! I've been having a blast with Castor and was looking forward to this one for a while, but I keep getting an error message in the Event Viewer which says "User $USER couldn't be added to the Remote Desktop Users group." I tried creating a new user by using net use /add to no avail. Any help would be appreciated! EDIT: Solved it! You need to be running Windows 11 Pro rather than Home Edition as a portion of the Remote Desktop protocol is disabled in Home.

Sheldon Calvin

I feel like a fool here - how exactly do I get this to work...?

Aaron Gee

I've been playing with Duo for a few days and it's incredibly nice. One thing I want to note for anyone else having trouble is that if you're running a machine with an integrated Intel GPU as well as NVIDIA graphics you'll have to disable the integrated GPU in order to get things working properly.

Aaron Gee

Try using Device Manager to disable your integrated GPU first before installation. Once installed, you should be able to start it and click the Open Sunshine button to check your configuration and enter a PIN. Make sure you're running Windows 11 Pro and that you've followed the instructions on Black Seraph's GitHub page to create a new user account exclusively for Duo.

ShabbyPenguin

Castor required different ports for moonlight, does duo use non-default ports?

Jose Francisco Avelar Diaz

Hi I managed to get this working on a clean windows 11 pro install . However I can't get my controller detected. Neither using a phone + controller nor anotherPC (Linux) with a steamOS like setup. If I enable the controller segmentation on the Due Setup app I get 4 controllers which I can't decide which one to use on steam. Any idea what's going on?

Eden Goldstein

After Duo worked for me for a few days, it now again does not. I get different errors for different clients: - We timed out waiting for the *username1* instance of sunshine.exe - Failed to apply the RdpIdd WUDF driver direct capture patch for *username2* What can I do?

DanCue

I'm in the same boat as some others on here. I'm lost on how to set it up. Read the post, read the GitHub. Not sure what to do past filling out the fields when creating an instance (clicking the + sign). If anyone would be willing to upload a YouTube video taking us step by step and troubleshooting I and I'm sure others would greatly appreciate it.

DanCue

My issues were sorted. I was attempting to use an account without a password. I was also using a name with a space for my Duo instance. The latter has been addressed by 1.0.6. Thanks BlackSeraph!

Antony Adler

hi - woud really appreciate some help, have tried repeatedly to get duo to work but never can. I have created a local account, i have installed duo, it seems to be running ok but I don't understand how to use it, ie whenever i run moonlight, i just see whatever account windows is logged into - either my main account if that's what i'm in, or the alt local account if that is what i'm logged into. I don't see how to run a separate windows session on my handheld! moonlight seems exactly the same, despite reinstalling it, there's just no sign that duo is actually doing anything? thanks.

SvB

Hey! I have one problem and one improvement: The question is: How to change the default keyboard layout? All instances created by duo have the ENG-Keyboard enabled. And the improvement: Is it possible to assign different apps / games to different instances

niallobr

Thanks for the work on this. I have a couple of issues. - Scaling won't work. Running at 3840x2160 on Windows 11 Enterprise with an RTX 2080 Super. I tried using scaling values of 175 and 200. I also get some errors when I start streaming. Maybe these are normal at the moment? Error 1: "Output Device not Working... Failed to Open Main Output Device (A1) Device not ready or used by another process. Select A1 Output Device first ! Keep default settings (default buffer size). Device configuration might be 32, 44.1, 48, 88.2 or 96kHz only KSWA_KS_Start failed to find valid pin" Error 2: "Installation Warning... Bad Audio Driver installation Detected! Some audio stream could not work correct... In case of unexplained audio problem, you may consider Checking Driver installation tool (see Menu) and follow recommendations if any... See also the Help and Support link given in Menu." I'm not sure what the "Help and Support link given in Menu" is or where to find it. I tried entering a custom scaling value in Windows but it didn't work.. I had one quick play test and performance didn't seem as good as Sunshine standalone, but I need to test more when the first issues are gone. My main hope for this is for HDR support without the need for a dummy plug. Thanks!

niallobr

Seems like the errors are caused by an audio app I have installed called VoiceMeeter. I was using it to make my Xbox Wireless Headset work properly in Windows. Uninstalled it for now. Just the scaling issue now. Any suggestions to fix the scaling at 4K?

Antony Adler

is there anyone lovely in this community willing to help me get duo setup? I'm quite competent with tech, and suspect I'm just missing something really obvious, but desperate to get it working! It's setup, it's just not "doing anything", I can't figure out how to make it run on my remote devices. I'd be so grateful!

niallobr

I had similar struggles! So I will try to be lovely :) Consider this to be like an alpha. I just tried a fresh install of 1.1.0 and couldn't connect but 1.0.9 worked. Here's my quick guide: 1. Make sure you're using a local Windows account. Not a Microsoft account. 2. Install Duo and open 'Duo Manager'. Note: I get 'out of memory' errors when I try to install. The only way I could get it to install was by doing a Diagnostic Startup or Safe boot, then running the setup with everything closed. You can find this option in System Configuration. 3. In Duo Manager, select the option to Auto Start (assuming you want this) then click the green '+' button to add a new profile. 4. Give the new profile a name and press enter. Then fill out the other fields. There's no save button so you may have to click around to get things to save. 5. Click the green 'Play' button to start the Duo service. 6. Click the 'Open Sunshine' button. Sunshine should open in your browser. Confirm the security exception if there is one. 7. Enter some details to create a local Sunshine account. 8. Once you access the Sunshine Home screen with 'Hello, Sunshine!' go back to Duo Manager. 9. In Duo Manager, click the stop button. Click the play button when it becomes available. You may need to also restart your PC... 10. Open Moonlight on one of your client devices. 11. Check for an option to Add Host Manually. 12. Enter the Moonlight URI found in Duo and be sure to include the port e.g 192.168.x.x:33146 Note: The scaling option is not working for me at 4K. Duo seems to also be preventing my system from going to sleep.

imzgee

Try using a random, unused port rather than the port that is currently being used by moonlight. Restart the service and you should be able to press the open moonlight button and it will load another instance of moonlight on that port

Felipe Guimarães

This is awesome, even more for remote workstations than gaming in my case, considering it significantly reduces overhead of windows for VMs. Is there any workaround, or in planning to limit resources? GPU/RAM/CPU resources per user. I know its what VMs do, but i would prefer this, since it removes a lot of overhead.

Fabian Zettl

First of all, thank you very much for this amazing app; it works excellently. One issue I'm facing is that I also have Sunshine running on my main account. Let's say I have a Main Account #1 and my Second Account #2. I want to stream #2 with Duo while continuing to work on #1. However, maybe later I only want to stream #1 to my Steam Deck via Moonlight and not use #2 at all. How do I proceed? Currently, I have two Sunshine sessions running, one for #1 without Duo and another for #2 with Duo. This leads to a double input.

Mat

Duo doesn't start the Sunshine instance. What should I do?

Thuong H

Version 1.2.4 Newest version broke moonlights xbox connection :( Now its only detectings host input during duo sunshine. My regular sunshine still works with clients xbox controller in moonlight

Maya

A few days ago Duo worked fine, but now it doesn't anymore. Moonlight keeps saying "Your network connection isn't performing well" even when I'm setting the bitrate down to 10 Mbps, and both devices are wired on GIgabit ethernet (or one is wired and the other is connected via a 5 Ghz Wifi 6 AP). I don't know if an update broke it or something else. Any ideas what could have gone wrong?

Maxwell Biggs

Don’t know if it’s possible, but a remote management would be awesome. Been having issues where all my moonlight clients will fail to find the sessions. I’m able to connect to sunshine for each session using their port #. A remote manager would be great for troubleshooting these issues from afar. I’ve also experienced the same issues as Maya with error messages of low/poor network connection even in my local network.

Adrian

I somehow cant get it to work on Win10 22H2. Sunshine does not seem to start. Is there some kind of log to see, what is actually happening?

Lauro Abreu

I recommend you putting in the github page a warning about password expiring for new local users! I just had mine expired and Duo wasnt working anymore (cuz it couldn't connect to my local user) and i didn't know why until i tried logging in the local user on my machine LOL

Maxwell Biggs

Been having problems getting moonlight to connect to sunshine. I can check that the sunshine service is running using the web UI, but once I try to connect in moonlight it stays stuck saying starting desktop.

Xeos Celeres

On Build 1.3.3 How do we invoke multi-instance steam? Because right now, I open the .bat for multi instance Steam. Do we need to do anything on the apps.json?

Michael Eber

Anyway to incorporate Joyxoff or other controller to mouse based input? Joyxoff doesn't seem to like multi-user setups. And unfortunately mouse mode on moonlight is not very good.

Milton Torres

can’t for the life of me get this to work

Jesus

Im using the steam big picture yo created for login into 2 differents accounts using DUO stream. Is there any possibility to being banned por using this method? one of the account is for local games only (outside steam) (just for using steam input and retroarch or other emulators) Thank you for your work

Sean .R

i've been trying to follow this but still can't get it to work. I think there is an issue in the sunshine configuration for me. Did you have the External IP and Port the same between the Sunshine application and Duo?

Brent

Am I crazy or does this not work for DuoStream? I have set up the instance and run it, but the software has open web admin panel greyed out. I have tried putting in my username and password into settings. I have tried connecting to Moonlight URI manually, but it still gives me issue. I followed the step-by-step instructions to no avail.

Stijn Wolf

No as you're just launching steam multiple times on the same pc. It's a built-in commandline option for steam. I suspect the only way you might get banned is by playing multiple games on the same account. Although that is purely speculative.

Stijn Wolf

Thank you for update 1.3.7! It seems to really reduce idle CPU usage on my 7800X3D. This now allows me to have more instances enabled!

Anthony Spangenberg

First of all, this tool is AMAZING. I have a quick question: can you explain what the "SDR White Level" setting accomplishes? I haven't been able to find any information on it.

Dave Gillgrass

Got this up and running. How do I update Sunshine to the latest version?

Filip Juříček

How can I change resolution? I tried some resolution in moonlight, but VM resolutions is always same. There isn't option click to VM's desktop and change resolution :(

Filip Juříček

So I add 1x1 resolution in sunshine setting to "Advertised Resolutions" (not my idea, found it here https://github.com/XITRIX/Moonlight-Switch/issues/145) and It help! Now resolution switch by the client.

Lami W.

I have latest windows 11 23h2 build and I can’t get Duo working it doesn’t properly start the instance I setup I checked RDP Wrapper and it’s started and running but I am getting the not supported error even though I ran update termsrv.ini It shows my termsrv ver as 10.0.22621.3374 I also disabled core isolation and memory integrity in windows still no luck

Maestro298

I finally managed to get it working, it's so cool thank you.

bwin

Hi, I am having issues getting my screen resolution to 1080p. I have it set as 1080p on Moonlight. Lower resolutions work (eg. 720p, 480p) but when I set it to 1080p it sets the resolution to 1536 x 864. I can't change display settings since it is from a remote session, and I can't access the monitor from my host either since it is a remote desktop monitor.

dodge

hi, been working great a few days but suddenly i lost my xbox wireless controller function in my host PC. (clients ok connected directly to controller) so if i want to play directly on my pc xbox controller connected via bluetooth but i cant control when using playnite fullscreen. weird thing is if i hit right/left trigger it goes up and down. but when im inside any game the controller works. it's just weird. i will try to uninstall and reinstall duo and sunshine later.

dodge

just an update: so last resort i uninstalled duo and controller worked as normal. i can use it normally ex: navigating to windows 11 start menu, i can also navigate playnite fullscreen and choose the game i want to play. Installed duo again and lost the normal function. temp fix for now is to stop duo instance. then i can play on the host pc with no issue with the xbox controller. anyone having the same issue? can anyone test? thanks!

BertyK

Getting this error when I try to start up the sunshine instance "Failed to apply the display driver patch for " not really sure how to fix this. It shuts down the instance

Dobromir Grouev

Hi! I`m using currently v1.4.2 and for couple of hours running it consumes around 20GB of my RAM even without using my PC at all. I am not seeing it in task manager, so i make one test:i stopped DUO, restart the PC after 24h there is no such problem. If i start DUO again after some time the problem with RAM consumption shows again. Can you advice what would be the cause of the problem ?

Blake Lindeman

Any intent to add support for VirtualHere? I was using it with a more standard sunshine setup, but it doesn't work when using the virtualized displays as the VirtualHere connected devices are passed through to the real display, not the virtualized one. Let me know if I can provide anything that could possibly help this issue as I know many people use VirtualHere with remote streaming.