Headless Display Emulator | Black Screen Fix
Table of Contents
INTRO
After using some RMM solutions over the years such as Datto RMM, ConnectWise Automate, others may include Dualmon, Teamviewer, or AnyDesk, sometimes I run into an endpoint where when I remotely connect the screen is black. These are always computers with no monitor attached but the issue does not occur for every endpoint without a monitor.
I’ve noticed this usually occurs with certain drivers where a generic monitor driver is not used when no monitor is attached, or configurations where the on-board integrated graphics controller is disabled in the BIOS for the primary use of a dedicated graphics card.
HARDWARE SOLUTION
To solve this issues with a hardware solution one could use a different BIOS configuration that solves the issue, or purchase a monitor emulator device like the one here. This little device makes the Windows OS believe there is a monitor attached and thus the black screen issue when remoting to the device is fixed.
SOFTWARE SOLUTION
There can be cases where the physical location of the endpoint makes the hardware solution not a fast resolution. This led me to research a possible software solution and I did find one. I created a script that will accomplish this fix but it will not stick after a reboot. The only way to get it to stick after a reboot would be to configure the script to run at Windows startup with either Group Policy, Task Scheduler, or the Startup folder.
The software solution also allows you to run the script multiple times to have more than one monitor available when remoting which for some may be very helpful when working remotely. The script pulls down a file and extracts it, then runs the arguments to the program to implement the fix.
POWERSHELL SCRIPT
# Define the URL of the file to download
$URL = "https://www.amyuni.com/downloads/usbmmidd_v2.zip"
# Make directory
$Destination = "C:\TEMP"
New-Item -Path $Destination -ItemType Directory -Force -ErrorAction SilentlyContinue | Out-Null
# Download the file from the URL
$DownloadPath = Join-Path $Destination "usbmmidd_v2.zip"
Invoke-WebRequest -Uri $URL -OutFile $DownloadPath
# Extract file downloaded from URL
$ExtractPath = Join-Path $Destination "usbmmidd_v2"
Expand-Archive -LiteralPath $DownloadPath -DestinationPath $ExtractPath -Force -ErrorAction SilentlyContinue
# Change directory to the extracted folder
Set-Location -Path "C:\TEMP\usbmmidd_v2\usbmmidd_v2"
# Determine processor architecture and execute appropriate commands
$Architecture = $env:PROCESSOR_ARCHITECTURE
if ($Architecture -eq "AMD64") {
Start-Process -FilePath ".\deviceinstaller64.exe" -ArgumentList "install usbmmidd.inf usbmmidd" -Wait
Start-Process -FilePath ".\deviceinstaller64.exe" -ArgumentList "enableidd 1" -Wait
} elseif ($Architecture -eq "x86") {
Start-Process -FilePath ".\deviceinstaller.exe" -ArgumentList "install usbmmidd.inf usbmmidd" -Wait
Start-Process -FilePath ".\deviceinstaller.exe" -ArgumentList "enableidd 1" -Wait
} else {
Write-Host "Unsupported architecture: $Architecture"
}
To uninstall simply change the value of enableidd 1 to enableidd 0 to remove the fake monitor.
CONCLUSION
I hope this helps someone out there that gets irritated when this happens. Another workaround for this issue is to use Remote Desktop to the device. Datto RMM and the ConnectWise Automate thick client have the ability to interface and RDP to the computers if this issue were to occur.
My name is Dex Sandel, author at WinReflection, a blog which aims to help others on various IT and Christian related subjects. DON’T TREAD ON ME! The best is yet to come, and nothing can stop what’s coming!
You all have a greater destiny in Christ, should you choose to ‘follow’ Him, not just believe. Many of you feel lost, without drive, and lack a greater purpose in your life causing depression, sadness, anxiety, and loneliness. Working your 9-5 job isn’t your primary purpose. So, then what is? That’s for you to discover, but hopefully I can provide some new unlocks along your path.
What will ‘you’ do, and what will your destiny be?
John 3:16: For God so loved the world that he gave his one and only Son, that whoever believes in him shall not perish but have eternal life.
Leave a Reply
Want to join the discussion?Feel free to contribute!