I would love an option that I could switch on and it would "disable HDCP" on these monitors so they could function like they did before. Sure I couldn't play some videos but that's not a great loss for me.
I would love an option that I could switch on and it would "disable HDCP" on these monitors so they could function like they did before. Sure I couldn't play some videos but that's not a great loss for me.
1. Fake GPU software, which I haven't researched at all but probably exists
2. Forcing your graphics chipset to turn a specific head on and leave it on
Here's a Linux-specific example of how to do #2. Since I'm just talking to graphics hardware here, there should be equivalent operations for all of the following for other operating systems.
I don't connect an external display at any point.
First of all, how things look to begin with:
$ xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 4096 x 4096
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-0 disconnected (normal left inverted right x axis y axis)
LVDS connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 60.00*+
800x600 59.86
848x480 59.66
720x480 59.71
640x480 59.38
Now, `xrandr --output VGA-0 --auto` isn't going to do anything because --auto will tell the GPU to pick the best resolution. No screen is attached so there's no list of resolutions to pick from.So, I'll generate a generic CVT modeline that sets up the VGA output for 1024x768@60Hz.
$ cvt 1024 768 60
# 1024x768 59.92 Hz (CVT 0.79M3) hsync: 47.82 kHz; pclk: 63.50 MHz
Modeline "1024x768_60.00" 63.50 1024 1072 1176 1328 768 771 775 798 -hsync +
Cool. Now I'll tell X11 about the modeline (note the copy-paste): $ xrandr --newmode "1024x768_60.00" 63.50 1024 1072 1176 1328 768 771 775 798 -hsync +
...And now do the XRandR dance to actually tell the output about the right modeline (this is Xorg-bureaucracy-specific): $ xrandr --addmode VGA-0 "1024x768_60.00"
Let's review the xrandr output: $ xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 4096 x 4096
VGA-0 disconnected (normal left inverted right x axis y axis)
1024x768_60.00 59.92
(...)
At this point I can go ahead and $ xrandr --output VGA-0 --mode "1024x768_60.00"
and my screen displays garbage for a fraction of a second and then figures itself out.At this point I know the output is enabled (and the glitch didn't mean nothing) and in mirroring mode. I can prove this without a display attached by running xrandr again:
$ xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 4096 x 4096
VGA-0 disconnected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768_60.00 59.92*
(...)
Two things: one, the mode has an asterisk next to it, meaning it's active (albeit without a screen attached), and two (the following will make sense in a minute if it doesn't straight away) Screen 0 has a "current" size of 1024x768. (Xorg "screens" represent a collection of video outputs you can move windows between.)So, let's disable mirroring mode and make this new Schrödinger-pseudo-existent area its own independent surface.
$ xrandr --output VGA-0 --left-of LVDS
At this point, i3 (my windowmanager) decides to move every single window onto the new offscreen surface area, and I go blind. Isn't minimalist software wonderful? (A new windowmanager is on my todo list; i3 drives me nuts. Anyway.)Once I sort i3 out and get back to a terminal, xrandr shows something new and interesting:
$ xrandr
Screen 0: minimum 320 x 200, current 2048 x 768, maximum 4096 x 4096
(...)
Oh hey, the Screen size is now 2048x768! Proof that I have two 1024x... outputs configured side-by-side. If I wanted to I could do --above or --below and have a 1024x1536 display.Here's the technical moral of the story: since approximately the time of the dinosaurs monitors have used EDID to provide autodetection info to graphics chipsets, so forcing manual configuration is pretty deeply buried.
But that's what you need to do; "my screen is weird and needs a custom configuration" and "okay just set these parameters and leave the output head running" are analogous.
If you want to turn your screen off and have the GPU keep the head running, I recommend figuring out how to fish out the modeline your GPU is currently using, and then force the GPU to manually use that modeline. That should disable output autodetection and keep the output permanently active.
Despite the fact that I've demoed Linux output configuration here, you're (ironically) not too likely to have this problem on Linux as Xorg is fairly flexible, and wouldn't normally need these kinds of instructions provided to it under normal circumstances; for Linux it would be more "what's explicitly killing the output and how do I turn it off" as opposed to digging around in driver settings.
Also - I picked VGA for this example, honestly probably for nostalgic reasons. These instructions will work equivalently regardless of output type.
Xmonad can't do stuff like this because it treats each monitor as a separate virtual screen.
If I wanted a bigger monitor I would of just bought a bigger monitor, dammit …
I just tried it with the monitor right in front of me, even unplugging it from the wall didn't cause the laptop to drop the monitor like it would if I had disconnected the HDMI cable.
* It's been a problem since at least 2012
* HDMI cables have an active-low connection pin, therefore it's easier to fool the video card into thinking the monitor is still connected.
* DisplayPort is an active-high signal, therefore if the monitor powers off, it's the same thing as the cable being physically disconnected.
Ideally I would be able to switch the monitor off in such a way that it still maintains a connection, just that the display is off.
Edit: formatting
I don't turn the power off at the source, i.e. unplug the monitors.
I used to turn them off with the button on the monitor (when all my monitors were DVI), so if the mouse was moved by accident during the night it wouldn't wake the monitors up. Right now I have to let it go to sleep normally, and then hope there isn't some strange vibration that is big enough to trigger a wake.
Edit: Better language and more info.
Edit: Oh, you're talking about things waking your computer up? Maybe turn off 'wake on USB'? Although that's less convenient otherwise. I know when my desktop computer is fully hibernated, mouse motions don't wake it but button presses do. And you can get into this state (assuming Windows 8+) by right clicking on the Windows icon / 'start' button and selecting 'sleep'.
Essentially this is a convenience thing, it used to work perfectly fine, then they added HDCP to make things less convenient.
Like I said, I'd be fine if the software (well Windows in my case) has a switch to disable HDCP and restore the old functionality of always assuming there's a monitor there.
I can dig it up for you if you want it when I get home.
EDIT: Upon re-read this doesn't really solve your accidental wake up problem. Oops.
Right now, my monitor is in my bedroom. If I let the OS shut off the monitor, it still shows a little white pulsing light to show it's in sleep mode. That's really annoying when I'm trying to sleep.