Easy-GPU-PV icon indicating copy to clipboard operation
Easy-GPU-PV copied to clipboard

Client/VM is stuck at 1024x768

Open kingkj52 opened this issue 2 years ago • 40 comments

I've followed the process (have a 3080 Ti), but when connecting in, the VM, in windows display settings, is locked to 1024x768. Even after using the update drivers ps1 file, and using the file to gather driver files into a zip, manually copying them over to C:\Windows, and rebooting, the issue remains. It is acting as if the client has no graphics drivers. Is there a workaround for this, or did I do something wrong?

kingkj52 avatar Aug 08 '22 20:08 kingkj52

I don't have a solution, but I've noticed that when you disable the MS Hyper V Adapter, it defaults to an MS Basic Adapter, which can't go any higher. (validate by right clicking Desktop>Display>Advanced Setting).

As of now, I cannot get Parsec to go above 1080p no matter what I do because of this. MS Basic is limited to 768p and the Hyper Visor Display is limited to 1080. I can SEE the nVidia adapter is Device Manager, but other than when I use RDP, I have never been able to get Parsec to go above 1080p (the dummy plug I have goes well above that and works with other Streaming Services)

Swany6mm avatar Aug 28 '22 04:08 Swany6mm

I am not sure the exact cause, but I was able to use Custom Resolution Utility to add a custom resolution and then was able to set the new resolution in Display Settings.

The VM originally was not locked to 1024x768, but after a Windows Update and restart, that is when the issue started occurring.

iwolfking avatar Sep 03 '22 15:09 iwolfking

I tried that out, and after doing some reading in the forums, it wont help. It comes back around to the VM only seeing the Hyper V Video and not the Parsec Video or the actual nVidia GPU, and it can't make changes to the Hyper V setup. I'm starting to toy with the idea of giving VMWare ESXi a try since nVidia opened up their drivers earlier this year. See if that can't get it going since it's a bit more mature regarding GPU sharing/partitioning and Passthrough.

Thank you for the idea though. It was something I didn't even know existed.

Swany6mm avatar Sep 06 '22 04:09 Swany6mm

This issue is easily fixed by installing a virtual display like usbmmidd

The cause of the issue you are experiencing is that ~recent versions of Parsec free edition launch Parsec virtual display only if no monitors are attached while adding virtual displays at will is reserved for paid editions.~ (EDIT: see my comment down this thread) We have two problems here:

  1. Hyper-V always plugs in its virtual display which does not support hardware acceleration, i.e. Parsec virtual display is never activated because there always is a display. Current release of Hyper-V does that even if you disable Hyper-V display in the guest.
  2. When no displays which support Nvidia rendering are connected, GPU driver disables acceleration, and the resolution is capped at 1024x768

The solution is to install a virtual display that is always "plugged in", like the one I mentioned above. This is analogous to using a dummy HDMI plug. You should then set the guest to display only this new virtual display.

klemens-st avatar Sep 08 '22 08:09 klemens-st

I've tried usbmmidd when I first started playing with GPU-P and had the same results, but admit, at this point, it may be worth revisiting with leasons learned.

I do use a dummy plug that is able to do up to 4k, but I've only tasked it with a max of 1440p within other programs, so I do know it is working as intended, but this also may be worth revisting with leasons learned and a different plug just to see if there's something Parsec isn't liking about it? With that said, when I use Parsec to connect directly to the host that only has the dummy plug, it works in 1440. But that is outside the VM and direct connect to the machine and GPU.

Another test I have in mind is I have another 1440 monitor sitting around. Thinking about digging it out and plugging it in with power, but leaving it off as I've read that some have tried that with better luck under differnt situations.

Thank you for the reply. I'll most likely be revisting usbmmidd tonight and remove the dummy plug. Appreciate your input and time!

edit So I tried the usbmmid again. Once installed it did show has having two monitors. I told Windows to display only on the montior (monitor 2) that was attached to the USB Mobile Monitor Virtual Display. I then made sure the Parsec Virtual was disabled/uninstall as well as disabling the Hyper V Video. Now when it boots, device manager shows HV Adapter as shut off, the USB functioning as well as the nvidia GPU. However, the monitor shows that it's attached to a wired display, but it's the MS Basic adapert. Back to it not seeing anything beyond the built in.

When redoing everything, things stay as they are until I reboot, then I lose everything. It's all still there in Device Manager, but I can no longer access it from the desktop

Swany6mm avatar Sep 08 '22 13:09 Swany6mm

I deployed a test VM using nothing but the scripts for EZ GPU and it still fails to work. I run the usbmmidd again, and again, it shows upand I can change the primary monitor/only show on the correct one, but again, when I reboot, it completely vanishes

Swany6mm avatar Sep 09 '22 01:09 Swany6mm

I found a band-aid/work around that is working. Don't like it as a perminant solution, so I'll keep researching, but will use this for now. Apologies, I don't knokw the proper way to link in git. I'll put a link to the thread and the actual message I used.

link https://github.com/jamesstringerparsec/Easy-GPU-PV/issues/59

"Ok I think I found a workaround, the trick is to activate a virtual display before the parsec driver. the VM is running windows 11 been access using windows 10. All the steps on the VM: Connect (parsec / hyper-v). Download and install usbmmidd_2 : this is a virtual display that we can control, take a look at the instructions, pretty simple. Activate using "deviceinstaller64 enableidd 1": Now you will have a virtual monitor. Create a task on task manager to run a bat file/command activating the virtual monitor: "deviceinstaller64 enableidd 1" and set it to run on windows start up and admin privileges without the need of the user to be logged in (after creating the task check for advanced settings or something like that). Disable the driver display of hyper-v (if its not already) on device manager. Reboot VM On display settings, disable all monitors that are not using the parsec driver (tip: take a look at refresh rate, parsec is the only one that goes above 60). Just to be sure, reboot VM again to check if the settings are being saved. Have fun.

PS: even the option to use client resolution is working."

Swany6mm avatar Sep 09 '22 02:09 Swany6mm

Yes, usbmmidd needs to be enabled on each boot. I did it by adding a startup script in gpedit.msc but other methods work too.

klemens-st avatar Sep 09 '22 06:09 klemens-st

Well the actual issues is .

When I log into my vm through the same account that is logged into my vm persecs, the persec virtual display Adapter started working, and it shows me the correct resolution ie. 1080p or even allow me to change the resolution of my vm.

But as soon as I disconnect and try to log in from guest persec account. Persec virtual display adapter didn't work. And Microsoft basic display driver seems to be on i.e. 1024x768 resolution gets displayed.

So the actual problem is how persec virtual display Adapter acts on host and guests connect.

Usbmmidd display driver works only if u uninstall and re-install it again and again after each remote session, which is quite annoying.

I hope this makes the issue clear , And help in more trouble shooting.

Also a very thanks for providing this script, can't say it's perfect but still it do open many opportunities.

I hope this issue with persec virtual display adapter will get fixed soon.

Thanks again.

veazel avatar Oct 06 '22 16:10 veazel

TL;DR

Download USBMMIDD v2 and create a task in Task Scheduler to solve the resolution problem.


startup.ps1 C:\usbmmidd_v2\deviceinstaller64 enableidd 1

In the Task Scheduler create a task that:

  • Run whether user is logged or not
  • Run with the highest privileges
  • Run at startup
  • Deactivate the conditions
  • Has the following action configuration: Action: Start a program Program/script: powershell.exe Add arguments: -NoExit -ExecutionPolicy Bypass C:\usbmmidd_v2\startup.ps1 image

P.S.: Edit the paths to match your system.

P.S².: Don't forget to deactivate all others monitors in the Windows Display Settings (show only on X).

image

gdias1992 avatar Oct 24 '22 17:10 gdias1992

@gdias1992 thanks for the clear instructions

I'll just add for anyone following them to also be sure to run usbmmidd.bat after downloading USBMMIDD to install the interfaces.

Joekraft avatar Nov 02 '22 21:11 Joekraft

I too had the same issue after deploying a new Win 10 VM. The suggestions in this thread helped solve this issue, but - although I can see Nvidia 2060 in the Device Manager (working ok), and now I can change screen resolution, I can't see the GPU section in Task Manager, dxdiag says there is no d3d renderer, and UserBenchmark also fails with no d3d renderer. Any ideas what else I'm missing?

mad-ady avatar Dec 23 '22 18:12 mad-ady

As long as GPU acceleration works without issues in your VM you can ignore the problems you mentioned. It is because of how Windows handles partitioned GPUs currently and should not affect performance. But yeah no GeForce Experience or other stuff that normally works with physical cards will work in the VM.

klemens-st avatar Dec 23 '22 19:12 klemens-st

If anyone is still using my solution from one of the previous comments: I was not right about virtual displays no longer working on free editions of Parsec. What happened is that when they added the fallback feature, previous virtual display setting was auto removed from the config file. But it still works if you add it back manually to the config file as explained in #204

So no need to use usbmmidd after all :D

klemens-st avatar Dec 25 '22 14:12 klemens-st

I've tried all the above, had some issues and started tinkering the Hyper-V myself, found enhanced session mode activ on user section according to the scresnhots below.

The Hyper-V driver came back to life right after I deactivated it, accepting all resolutions.

Hope this does help someone.

image

image

augustorubiao avatar Jan 16 '23 23:01 augustorubiao

I'm confused what the solution is here. I get 1024x768 in parsec. Should we be editing a config, running a .ps, installing an external driver or something else?

Any help would be appreciated thanks :)

totalitarian avatar Feb 04 '23 19:02 totalitarian

I've ended up using third-party custom resolution software along with a simple batch file running on Windows start to add the custom resolution + disable the Hyper-V Video driver to avoid BSOD.

Unfortunately I am not using the virtual PC right now since I have been having personal issues with RAM. I will try to grab this content for you.

augustorubiao avatar Feb 04 '23 21:02 augustorubiao

I'm confused what the solution is here. I get 1024x768 in parsec. Should we be editing a config, running a .ps, installing an external driver or something else?

Any help would be appreciated thanks :)

Sorry for not having the time to reply sooner. I'm currently using the usbhimdd_v2 solution discussed above. The display is activated on logon via a scheduled task. I do have resolution problem when connecting via parsec -one instance comes up at 1024x768. So I applied a second "fix". I downloaded a command-line utility called qres.exe that allows me to set the resolution via script - something like qres.exe /x:1920 /y:1080. I do start it with a 5s delay after enabling the display, but it doesn't always work. So I keep it as a desktop shortcut handy (for various resolutions) that I activate manually. The downside is - if I disconnect and reconnect from parsec, it reverts to 1024x768, and I need to run the script manually.

mad-ady avatar Feb 14 '23 10:02 mad-ady

Usbmmidd is not needed as I mentioned earlier. See this comment and the discussion in that PR.

Let us know if you followed the instructions and added the virtual display config line manually but it still didn't work.

klemens-st avatar Feb 14 '23 11:02 klemens-st

Usbmmidd is not needed as I mentioned earlier. See this comment and the discussion in that PR.

Let us know if you followed the instructions and added the virtual display config line manually but it still didn't work.

Just tested it, and this tweak didn't work.

MungbeanOuO avatar Feb 25 '23 12:02 MungbeanOuO

Usbmmidd is not needed as I mentioned earlier. See this comment and the discussion in that PR.

Let us know if you followed the instructions and added the virtual display config line manually but it still didn't work.

Just tested it, and this tweak didn't work.

Share your config file

klemens-st avatar Feb 25 '23 13:02 klemens-st

Share your config file

I removed it in User\Install.ps1 according to that article $configfile += "host_virtual_monitors = 1" $configfile += "host_privacy_mode = 1" Then added $configfile += "host_virtual_monitor_fallback = 1" image

After that recreate a new VM. After the VM restarts, it returns to 1024x768. I have confirmed that the parameters in C:\ProgramData\Parsec\config.txt still exist. image

I have also tried closing parsec and restarting them after closing parsec.exe from the task manager, but the situation remains the same. Currently using usbmmidd_2 to connect through parsec, but I don't know how to adjust the refresh rate, which is a pity.

MungbeanOuO avatar Feb 25 '23 14:02 MungbeanOuO

Ok try the following:

  • Disable usbmmidd
  • Stop parsec and all its processes
  • Add host_virtual_monitors = 1
  • start parsec and try to connect again

klemens-st avatar Feb 25 '23 14:02 klemens-st

This has to be done after the vm is created. The config has to include host_virtual_monitors = 1

klemens-st avatar Feb 25 '23 14:02 klemens-st

Do not modify the configs set by the script, they are required.

On Sat, 25 Feb 2023, 14:24 Klemens Starybrat, @.***> wrote:

This has to be done after the vm is created. The config has to include host_virtual_monitors = 1

— Reply to this email directly, view it on GitHub https://github.com/jamesstringerparsec/Easy-GPU-PV/issues/190#issuecomment-1445130458, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD6U6B2U3KG6KUWAG5Y4N4LWZIIYBANCNFSM556OYSAQ . You are receiving this because you are subscribed to this thread.Message ID: @.***>

Kodikuu avatar Feb 25 '23 17:02 Kodikuu

@Kodikuu Im referring to your answer to my question which has worked for me fine. It should also work for others in this thread.

klemens-st avatar Feb 25 '23 17:02 klemens-st

Yes, in the config itself, after setup of a VM that no longer has that setting set.

The script already sets this, and host_privacy_mode. Both of which are needed. Do not modify the configs set by the script.

The thread you linked was a test of a new setting which failed.

Kodikuu avatar Feb 25 '23 18:02 Kodikuu

The script was changed back and it finally worked, but there are many details that need to be done to make the virtual display driver work properly. Or maybe my computer is weird. 1. After the Windows update in the VM, I encountered the problem that I could not log in automatically and the password was wrong. I don’t have a better solution for this, so I just re-created a VM. 2. When the VM enters the desktop for the first time, the browser or a certain application screen (for example, discord) on the physical machine may freeze. If you interact with that window, the entire screen will freeze. My solution is to re-plug the display output of the physical machine . 3. The host_virtual_monitors = 1 and host_privacy_mode = 1 entered by the script may disappear from the config when connecting to parsec for the first time, and they need to be added together with host_virtual_monitor_fallback = 1 to call out the virtual monitor normally. I don't know if I should update the VM's system, but I'm used to doing it. However, the update and restart will conflict with the parsec virtual display driver and config, which will cause the shutdown to be stuck or the first point. This part still needs more testing to see what the correct order of execution is. 4. The parsec remote screen cannot operate the operating system application (such as task manager). My solution is to close the parsec application and restart the VM.

The above are the problems and solutions I generally encountered during the setting process. My English is not good, so I used machine translation for my reply. Please forgive me if there are any typos. image

MungbeanOuO avatar Feb 26 '23 06:02 MungbeanOuO

This happened when I connect the VM using another Parsec account, which means the privacy mode can't be enabled and virtual monitor won't be created. Also #59 is worth reading.

I tried the usbmmidd solution but it's not good enough. I tried to use a DP dummy plug but not worked. It would be nice if Parsec would fix this. Or is there anyway to keep the Parsec VDA from disappearing?

H4M5TER avatar Mar 22 '23 11:03 H4M5TER

All; I had this issue as well, and I wasn't accepting the fact to have to install a 3rd party software to fix it. Running VirtualBox on a flavor of Debian, with a Windows 11 VM. VirtualBox downloaded/installed from Oracle's VirtualBox website. Windows 11 wasn't changing out of 1024 x 768 resolution, but all other installed VM's were fine.

After a lot of looking around, I came across a Reddit post reply, done by u/cantfind105keys, which solved everything for me! It reads as follows:

1. Go to the download page of your VirtualBox version, which is https://download.virtualbox.org/virtualbox/7.0.6/ , (NOTE: If you have the latest version of VirtualBox (v7.0.8), then it would be here.) 2. Manually download VBoxGuestAdditions_7.0.6.iso from there, 3. Check it downloaded OK using the checksums in SHA256SUMS, 4. Manually insert the drive in the VM. If the VM is running, it’s in the Devices > Optical Drives > Choose a disk file menu, then select the iso you just downloaded.

NOTE: Make sure to check your VirtualBox version number, and place the end of the URL with your version number (or go up the Parent Directory and find your version). Also, you may need to manually add an extra CD-Rom drive for your VM, if you don't already have an extra one that's empty, so you can mount the .iso.

Hope this helps someone on here, and/or down the line.

mikekachar avatar May 23 '23 08:05 mikekachar