Wednesday, January 30, 2013

Disable Phantom VGA1 Output in Linux on Intel DZ77BH-55K

In a previous post, I detailed my problem with this board in Linux. There's also an Ubuntu Bug Report about this issue
I have a new Intel DZ77BH-55K motherboard with an i5-2400 processor with on-chip HD graphics. The motherboard has one HDMI and one DisplayPort output. For testing reasons and on the search to solve the problem I have connected both outputs to my EIZO EV2333W 23-inch 1920x1080 (16:9) monitor (HDMI to DVI via adapter, DisplayPort to DisplayPort), but I have the same problem when the DisplayPort cable is not connected.
The problem is that if the computer boots up and shows the login screen the login screen appears with 1024x768 resolution and not with the monitor's native 1920x1080. The driver is actually the intel driver (no fallback to VESA). After login I can correct thedisplay to 1920x1080 with the "Displays" section of the System Settings and this persists when I log out an log in again, only the login screen and the desktop of every new user stays 1024x768.
The problem seems that there are more than the two (HDMI and DisplayPort) displays reported by the driver, according to the xrandr output. Especially there is a "VGA1" display always considered as connected and with max resolution of 1024x768. This seems to somehow determine the default resolution, probably because the standard multi-monitor mode is mirroring and due to the VGA1 ghost display also a system with one monitor and one monitor cable is already in multi-monitor mode.
It looks like it's an issue with the kernel:
Ok, till we have evidence to the contrary I'll shrug this off as a hw bogosity ... crt detection is a funky business and we get way too much hate-mail from people because every time we touch it we break something. So I prefer not to touch it. Since you can easily work around the issue with xrandr, shouldn't be to horrid.
One way to fix it is with xrandr:
xrandr --output VGA1 --off

But your display manager will need to be appropriately updated, unless you're just using it on a per-user basis...

The other solution that was posted was adding  the option: "video=VGA1:d" to the kernel.
This didn't work for me however. You might want to try it, but I think I think that parameter is incorrect (see below).

On the Gentoo Wiki, in an article about nouveau, they discuss how to disable incorrect or phantom outputs. Look in /sys/class/drm for a list of outputs.

It turns out, I had an output that was labeled as "card1-VGA-1". The wiki says remove the "card1-" and you're left with "VGA-1". Then add this option to the kernel:

The difference, being, of course, the dash. The kernel names stuff slightly differently I guess. This option worked for me, and although xrandr -q still detected a VGA1 output, it finally said that it was disconnected (like it should be, since it doesn't exist).

Hoping this is fixed automatically some day. But the bug is marked as "RESOLVED WONTFIX". Grrr.

Still having lagging/microfreezing with the Intel HD graphics, but it's one step closer.