LeGeRyChEeSe / Sunshine-AIO

An all-in-one step-by-step guide to setup Sunshine with additional tools.
MIT License
109 stars 1 forks source link

`Failed to disable all other displays` during `setup_sunvdm.ps1` #4

Closed drewmullen closed 1 week ago

drewmullen commented 3 weeks ago

Thanks for putting all this together. I am getting the following error in sunvdm.log when trying to start a stream:

Setting up a moonlight monitor with 1280x720@60 with hdr off
Enabling the virtual display.
Microsoft PnP Utility

Failed to enable device:  ROOT\DISPLAY\0001
The device is not connected.

Setting up the virtual display and disabling other displays.
Disabling all other displays.
Failed to disable all other displays.
At C:\Users\dmwin\Setup\sunshine-virtual-monitor-main\setup_sunvdm.ps1:74 char:9
+         Throw "Failed to disable all other displays."
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Failed to disable all other displays.:String) [], RuntimeException
    + FullyQualifiedErrorId : Failed to disable all other displays.

sunshine main dir: image

device manager: image

pete-mcneill commented 3 weeks ago

Also getting the same issue

LeGeRyChEeSe commented 3 weeks ago

Hi!

I recently pushed a new version of the script that’s fixed the issue.

Please update the repo with git pull then install Virtual Display Driver again to fix the issue.

Also the command for executing the script has changed. Please see the README.md.

pete-mcneill commented 3 weeks ago

Unfortunately no change for me with the changes. I've been debugging and seems to be coming from the Virtual display ps1 script.

This line in particular pnputil /enable-device /deviceid root\iddsampledriver

Running it by itself to try and turn on my virtual display hits the same error in a console. So I'm guessing it's something to do with the name of the device which I'm not familiar with. I will raise on that repo too.

LeGeRyChEeSe commented 3 weeks ago

Go to Device Manager and completely uninstall the IddSampleDriver device then execute the AIO tool again and install only Virtual Display Driver.

pete-mcneill commented 2 weeks ago

Tried a fresh install of everything and have ended up with no logging from the sunshine virtual monitor. But found in sunshine I'm getting this log:

Error: [powershell.exe -executionpolicy bypass -windowstyle hidden -file "C:\Sunshine-AIO\tools\sunshine-virtual-monitor-main\sunshine-virtual-monitor-main\setup_sunvdm.ps1" %SUNSHINE_CLIENT_WIDTH% %SUNSHINE_CLIENT_HEIGHT% %SUNSHINE_CLIENT_FPS% %SUNSHINE_CLIENT_HDR% > "C:\Sunshine-AIO\tools\sunshine-virtual-monitor-main\sunshine-virtual-monitor-main\sunvdm.log" 2>&1] failed with code [1]

Still trying to debug to see if I can find more info

Edit:

Running this line from the script: pnputil /disable-device /deviceid Root\\IddSampleDriver

Ends up with a similar issue to before:

`PS C:\Sunshine-AIO> pnputil /disable-device /deviceid Root\IddSampleDriver Microsoft PnP Utility

PNPUTIL [/add-driver <...> | /delete-driver <...> | /export-driver <...> | /enum-drivers | /enum-devices [<...>] | /enum-interfaces [<...>] | /disable-device <...> | /enable-device <...> | /restart-device <...> | /remove-device <...> | /scan-devices [<...>] | /?]

Commands:

/?

Show usage screen.

/disable-device [/reboot]

Disable devices on the system.
  /reboot - reboot system if needed to complete the operation.

Examples:
  Disable device:
    pnputil /disable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"`
Atsirkunov commented 2 weeks ago

Having the same issue, but if I enable/disable the IddSampleDriver - then it suddenly works normally to turn it on and off, but lasts only until the next restart

mysteriousHerb commented 2 weeks ago

same issue here:

Setting up a moonlight monitor with 2560x1440@120 with hdr on
Enabling the virtual display.
Microsoft PnP Utility

Failed to enable device:  ROOT\DISPLAY\0000
The device is not connected.

Setting up the virtual display and disabling other displays.
Disabling all other displays.
Failed to disable all other displays.
At F:\Sunshine-moonlight\sunshine-virtual-monitor-main\setup_sunvdm.ps1:74 char:9
+         Throw "Failed to disable all other displays."
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Failed to disable all other displays.:String) [], RuntimeException
    + FullyQualifiedErrorId : Failed to disable all other displays.
LeGeRyChEeSe commented 2 weeks ago

The issue was solved with the new release.

  1. Go to your root directory of the project Sunshine-AIO, open a Windows Terminal and run the following command to get the latest release of the script:
    git pull
  2. Then completely uninstall the IddSampleDriver from Device Manager and make sure to tick the Remove the driver.
  3. Execute the Sunshine AIO Tool script with the following command :
    virtualenv-python-sunshine-aio\Scripts\python.exe src\main.py
  4. Select 3. Download and Install Virtual Display Driver

The problem should be solved now.

If you still have issues, try to run the install everything part and skip the Sunshine installation part by canceling the installation when it's prompted.

pete-mcneill commented 2 weeks ago

For me this setup repo works correctly but all the issues I have are on connection in the sunshine-virtual-monitor.

I've started fresh today to make sure and pulled this code along with latest running instructions.

My first issue is with pnputil /enable-device /deviceid root/iddsampledriver in the setup_sunvdm.ps1 script. It doesn't like the /deviceid parameter and returns the above help usage instructions I've posted above, if I change this to my actual virtual display instance id it works: pnputil /enable-device ROOT\DISPLAY\0000

The script then looks for a display source description matching "IddSampleDriver Device HDR" I've logged out each description and all of mine are NVIDIA GeFore RTX 3070 so it never sets the vdDisplay variable.

And then because of that when it tries to set the primary monitor and disable all the others it fails as the vdDisplay is empty.

drewmullen commented 2 weeks ago

@LeGeRyChEeSe switching to the script in your branch dev-AIO fixed this issue for me. However, I had to re-set the Execution-Policy and run Unblock-File again, just FYI.

I also ran into an issue where I had to restart my PC while playnite was on and the ldd driver wasnt disabled properly... basically i had to boot into safe mode to disable it so the PC would start up properly. Is this the only way to solve that kind of issue or is there something else I can do?

LeGeRyChEeSe commented 2 weeks ago

The new release is out and coming with a lot of fixes. Take a look and to get a fresh install you should execute the program again because of some bugs and some issues fixed now.

mysteriousHerb commented 2 weeks ago

The new release is out and coming with a lot of fixes. Take a look and to get a fresh install you should execute the program again because of some bugs and some issues fixed now.

fair, but how do I clean uninstall first?

LeGeRyChEeSe commented 2 weeks ago

You don’t need to uninstall anything. Just execute the program.

MarcioFCMartins commented 2 weeks ago

I am still having the same issue. It seems that the issue is that when my PC is restarted, the Virtual Display Device (VDD) is considered Disconnected, rather than simply Disabled (notice the status):

$ pnputil /enum-devices /class Display
Microsoft PnP Utility

Instance ID:                ROOT\DISPLAY\0000
Device Description:         IddSampleDriver Device HDR
Class Name:                 Display
Class GUID:                 {4d36e968-e325-11ce-bfc1-08002be10318}
Manufacturer Name:          <Your manufacturer name>
Status:                     Disconnected
Driver Name:                oem43.inf

If I try to enable the VDD or start a sunshine stream right now, I get the same error:

$ pnputil /enable-device /deviceid root\iddsampledriver
Microsoft PnP Utility

Failed to enable device:  ROOT\DISPLAY\0000
The device is not connected.

If I then manually enable and disable the monitor in the Device Manager, the status of the Virtual display changes from Disconnected to Disabled and now it works:

$ pnputil /enum-devices /class Display
Microsoft PnP Utility

Instance ID:                ROOT\DISPLAY\0000
Device Description:         IddSampleDriver Device HDR
Class Name:                 Display
Class GUID:                 {4d36e968-e325-11ce-bfc1-08002be10318}
Manufacturer Name:          <Your manufacturer name>
Status:                     Disabled
Driver Name:                oem43.inf

$ pnputil /enable-device /deviceid root\iddsampledriver

Microsoft PnP Utility

Enabling device:          ROOT\DISPLAY\0000
Device enabled successfully.

Now I can successfully start a moonlight stream without error. This is only true until I restart my computer, at which stage the VDD goes back to Disconnected.

No idea how/what controls the "disconnected" status of the device. Any tips?

vincjl commented 2 weeks ago

I managed to enable 'Disconnected' display by running this command

Get-PnpDevice -FriendlyName 'IddSampleDriver Device HDR' | Enable-PnpDevice -Confirm:$false

You may want to try and replace line 34 of file setup_sunvdm.ps1:

Write-Host "Enabling the virtual display."
Get-PnpDevice -FriendlyName 'IddSampleDriver Device HDR' | Enable-PnpDevice -Confirm:$false

This may not be needed, but I also replaced line 6 of file teardown_sunvdm.ps1:

Write-Host "Removing the moonlight display."
Get-PnpDevice -FriendlyName 'IddSampleDriver Device HDR' | Disable-PnpDevice -Confirm:$false
LeGeRyChEeSe commented 2 weeks ago

@MarcioFCMartins Thank you for the analyze, i didn’t know this particularity !

@vincjl Thanks you for the fix, this is very helpful !

I'm analyzing and adjusting the code for Sunshine Virtual Monitor. It contains a few imperfections that create a lot of mistakes for many of you. I'll test the commands and integrate them into the script if I don't have any problems.