Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

Hardware

I have the following hardware configuration:

  • PC running Ubuntu 10.04
  • Onboard video card with one VGA output (Intel P4M800 - Via Unichrome)
  • VGA splitter: 1 input, 4 outputs. Up to 2048x1536 (according to spec)
  • One 42'' TV/Monitor connected to the splitter via its VGA input
  • Two 32'' TV/Monitor connected to the splitter via its VGA input

Problem

With that configuration, Ubuntu only shows 640x480 and 800x800 as possible resolutions. However, if I connect any of the TV/Monitor directly to the PC (via VGA) then Ubuntu shows a long list of possible resolution (I tried several of them and they worked fine).

It seems that X Window System automatic configuration is not working properly. How do I manually configure it? What info should knows of the different devices involved beforehand?


Context: The monitors are intalled in public spaces across one building to display dynamic information that is processed in the PC (a Flash presentation running in Firefox in fullscreen mode).

Update:

I tried the following, as the link provided in the answers said:

  1. Get the modeline for the resolution using cvt

  2. Created the new mode using xrandr --newmode

  3. Added the mode to the output display using xrandr --addmode

  4. Tried to change the resolution using xrandr --output ... --mode ...

But I get this: xrandr screen cannot be larger than 800x600 (desired size ...)

share|improve this question
    
What video card are you using?. Not all the drivers play nice with xrandr. –  Javier Rivera Oct 7 '10 at 6:53
    
@Javier, I've added the video card to the question –  Toto Oct 7 '10 at 14:12
    
openchrome... not good news :(. –  Javier Rivera Oct 7 '10 at 14:43
    
@Javier I didn't understand your last comment –  Toto Oct 7 '10 at 16:01
    
Openchrome drivers are not exactly the best, and I don't know a thing about them. I have only used one computer with Ubuntu and an OpenChrome card, I just put an old ATI on it after a couple of week to break free of the continuous problems. There is also very little documentation about it on the web. –  Javier Rivera Oct 7 '10 at 17:00

2 Answers 2

up vote 3 down vote accepted

Here's how monitor autodetection works: Every monitor's firmware contains a chunk of data called EDID which encodes the monitor's resolutions and refresh rates and so on. The video driver makes a hardware call to retrieve this data, via the video card / monitor connection.

Splitters (like KVMs) manipulate the path from the card to the monitor. Some KVMs pass the EDID properly, others don't. My guess is that your splitter is not allowing the EDID to be passed back.

Indeed, I would guess that the system call has a built-in assumption that only one EDID chunk is present on a given connector, so even if it was returning something, it probably wouldn't be what you wanted.

Also, while all monitors return EDID, some TVs don't, or return a corrupted EDID. But since you tested it without the splitter and it worked correctly, I don't think this problem affects you.

Different monitors support different sets of resolutions and frequencies, but all monitors are required by the VESA Standard to support at least two: 640x480 and 800x600. So when X doesn't know anything about the monitor connected to it, it falls back to those two resolutions. That's why those are the only ones you see available.

Anyway, I think in this case you can't rely on EDID to get your monitors magically auto-configured. Instead, you'll need to manually specify the data yourself.

If you had specified your video driver or linked to your Xorg.0.log, I could give you more specific info. The procedure varies depending on what video driver you're using. If it is a KMS-enabled driver like -intel or -ati you have to specify it via the kernel. If you have KMS turned off or are using a non-KMS driver, but the driver supports RANDR (e.g. -fglrx), you can add a modeline using the xrandr command line tool such as documented at the bottom of https://wiki.ubuntu.com/X/Config/Resolution. If you are using a non-KMS, non-RANDR driver such as -nvidia, it is controlled entirely in your /etc/X11/xorg.conf; in this latter case you'll need to look up the vertical and horizontal refresh rates for all the monitors (hopefully they're all close to the same ranges, else you're screwed), and then specify those via the HorizSync and VertRefresh options in xorg.conf. You'll also need to add the resolution in the xorg.conf. Possibly you may need to construct a ModeLine as well, but I'll bet just the HorizSync and VertRefresh will be enough.

Good luck, and if you get stuck be sure to post your /var/log/Xorg.0.log.

share|improve this answer
    
+1 @Bryce for the excellent explaination. See the update in the question as I tried using xrandr –  Toto Oct 6 '10 at 20:31
    
I cannot believe that while Ubuntu still requires people to "craft" a xorg.conf file there are no nice easy GUI tools to do it. It's such a faff and well beyond a non-technical user, yet essential for a workable experience of using ubuntu. #ubuntufail I got mine working with cvt, xrandr --newmode and xrandr --addmode but I know it's gonna fail at next reboot unless I spend the next 2 hours getting an xorg.conf file working. –  artfulrobot Jun 13 '12 at 9:41

It looks like X isn't able to correctly detect the resolution of the splitter.

You can force it to use arbitrary resolutions using xrand. There are some documentation on it, check the Adding undetected resolutions section and the Setting Xrand change persistent.

share|improve this answer
    
+1 @Javier for the great link, see the question update as I tried what the article says. –  Toto Oct 6 '10 at 20:32

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.