What is your question?
I just found about this project by luck (i knew and used usbmmidd_v2 before and searching about it again lead me here), and want to use it on my main home/workstation/gaming PC when i am accessing it remotely, specifically now with AnyDesk.
To skip the details, i don't know if it's worth implementing this function as a feature in the companion app, but what i am looking to achieve is for this virtual display driver to only activate when no other monitors are detected/connected to the system. This will prevent many of the regular issues i see people posting here, as one of the main uses is driving a headless system remotely much how i am doing.
I am assuming the simplest way is to write some script and have it as a task running in the background at an internal, where it enables the virtual monitor when it identifies no (real) monitors are detected, and disables VDD when one or more (real) monitors are detected.
Of course i am a noob in software programming so i could give it a try with some LLM bot and see if i can make it work.
Although i am writing it here in case you are also interested implementing such a feature.
Now some relevant background details:
There are multiple issues stemming from EDID/monitor detection, hot-plug detection, and multi-monitor setups in windows:
-
Under windows in a multi-monitor setup, when a display is "disconnected" the windows of that monitor are transferred to the remaining active monitor. Upon reconnecting the disconnected monitor the windows do not return to their place. So you lose positioning and sizing. Microsoft knows about this and they implemented a solution back in 2021 ( https://devblogs.microsoft.com/directx/avoid-unexpected-app-rearrangement/ ) in a W10 insider build. I remember i tested it and it wasn't perfect. Since then this build continued to become W11 and this fix was never backported to W10 as far as i know.
-
Monitor detection is regulated by the GPU driver that interfaces the hardware monitor detection (EDID, HPD aka hot-plug detect) to the software side (Windows DWM). GPU manufacturers (Nvidia/AMD) are mostly to blame here as they lock down EDID emulation behind their professional/workstation gpu's (Quadro/Radeon Pro), without even giving the option to force video output for existing monitors. Then you have the implementation of several monitor manufacturers not providing any option to disable hotplug detect. On HDMI output it's much easier to bypass/spoof than Displayport and there are existing cheap dummy passthrough plugs (with their own EDID, you can still use CRU to modify to liking). Still, this is really stupid when the GPU driver can prevent all of this hassle.
-
Many remote desktop programs require the need of an active display output. Teamviewer used to provide their own virtual video driver a long time ago, but nowadays it uses windows safe mode output (normally stuck at 640x480 but you can change it through registry with this latest method: https://superuser.com/a/1684605/454548)
Personally i've stopped using them since they've gone downhill in the last couple of years, and now using Anydesk which doesn't provide such fallback option. Without video output the program is totally useless.
I did rant about this issue several years ago: https://www.reddit.com/r/pcmasterrace/comments/lbz2zv/request_for_gpu_manufacturers_to_allow_display/
And had my try in developing a solution, which is a hardware passthrough that can manipulate Hot-plug detection for DisplayPort monitors, of which is still use to this day:
https://www.facebook.com/TechnoRageDevelopments/posts/pfbid02GgVK42nhfFfahiCK13oJNcrEnncXfprESLk3Xke587GWgyeHQLKv8h9z4nHAsqmnl
I did also make another variation that can theoretically emulate EDID directly, but even though i have the pcb's ready i didn't test them, neither wrote FW for this as i have no free time (and many other projects to finish)
The issue with this light ("LE") solution is that while it works perfectly fine it will not work when:
- You power-on or reboot the PC with monitor(s) powered off.
- GPU driver fully crashes due to OC or whatever, and monitor(s) are powered off.
In both cases EDID is never communicated to the GPU so no video output
Anyways, while this information is a bit outside the scope of this project, i think it's relevant and useful and it's also worth adding so you understand where i am coming from, plus it will also help more people to find about it when searching about such issues.
Additional information
No response
Contact Details
No response
What is your question?
I just found about this project by luck (i knew and used usbmmidd_v2 before and searching about it again lead me here), and want to use it on my main home/workstation/gaming PC when i am accessing it remotely, specifically now with AnyDesk.
To skip the details, i don't know if it's worth implementing this function as a feature in the companion app, but what i am looking to achieve is for this virtual display driver to only activate when no other monitors are detected/connected to the system. This will prevent many of the regular issues i see people posting here, as one of the main uses is driving a headless system remotely much how i am doing.
I am assuming the simplest way is to write some script and have it as a task running in the background at an internal, where it enables the virtual monitor when it identifies no (real) monitors are detected, and disables VDD when one or more (real) monitors are detected.
Of course i am a noob in software programming so i could give it a try with some LLM bot and see if i can make it work.
Although i am writing it here in case you are also interested implementing such a feature.
Now some relevant background details:
There are multiple issues stemming from EDID/monitor detection, hot-plug detection, and multi-monitor setups in windows:
Under windows in a multi-monitor setup, when a display is "disconnected" the windows of that monitor are transferred to the remaining active monitor. Upon reconnecting the disconnected monitor the windows do not return to their place. So you lose positioning and sizing. Microsoft knows about this and they implemented a solution back in 2021 ( https://devblogs.microsoft.com/directx/avoid-unexpected-app-rearrangement/ ) in a W10 insider build. I remember i tested it and it wasn't perfect. Since then this build continued to become W11 and this fix was never backported to W10 as far as i know.
Monitor detection is regulated by the GPU driver that interfaces the hardware monitor detection (EDID, HPD aka hot-plug detect) to the software side (Windows DWM). GPU manufacturers (Nvidia/AMD) are mostly to blame here as they lock down EDID emulation behind their professional/workstation gpu's (Quadro/Radeon Pro), without even giving the option to force video output for existing monitors. Then you have the implementation of several monitor manufacturers not providing any option to disable hotplug detect. On HDMI output it's much easier to bypass/spoof than Displayport and there are existing cheap dummy passthrough plugs (with their own EDID, you can still use CRU to modify to liking). Still, this is really stupid when the GPU driver can prevent all of this hassle.
Many remote desktop programs require the need of an active display output. Teamviewer used to provide their own virtual video driver a long time ago, but nowadays it uses windows safe mode output (normally stuck at 640x480 but you can change it through registry with this latest method: https://superuser.com/a/1684605/454548)
Personally i've stopped using them since they've gone downhill in the last couple of years, and now using Anydesk which doesn't provide such fallback option. Without video output the program is totally useless.
I did rant about this issue several years ago: https://www.reddit.com/r/pcmasterrace/comments/lbz2zv/request_for_gpu_manufacturers_to_allow_display/
And had my try in developing a solution, which is a hardware passthrough that can manipulate Hot-plug detection for DisplayPort monitors, of which is still use to this day:
https://www.facebook.com/TechnoRageDevelopments/posts/pfbid02GgVK42nhfFfahiCK13oJNcrEnncXfprESLk3Xke587GWgyeHQLKv8h9z4nHAsqmnl
I did also make another variation that can theoretically emulate EDID directly, but even though i have the pcb's ready i didn't test them, neither wrote FW for this as i have no free time (and many other projects to finish)
The issue with this light ("LE") solution is that while it works perfectly fine it will not work when:
In both cases EDID is never communicated to the GPU so no video output
Anyways, while this information is a bit outside the scope of this project, i think it's relevant and useful and it's also worth adding so you understand where i am coming from, plus it will also help more people to find about it when searching about such issues.
Additional information
No response
Contact Details
No response