2 external displays on Thinkpad t430s with HD4000 graphics

I am trying to run 2 external displays with my thinkpad t430s but it doesn't work.

I get the error : could not set the configuration for CRTC 65

I'm using the VGA output and the hdmi output with a hdmi to vga adapter to go into two vga screens.

I read on Intel's documentation that the hd4000 is supposed to be able to manage 2 external screens on top of the internal display...

Would it be possible to achieve with ubuntu 12.04?


First, I would like to note that the answer I am about to provide is based on answers I gave for the questions here and here.

Second, take note of the information found on Intel's site. It suggests that it can work, but everything I have read thus far leads me to believe that three monitors will not work in the real world. That being said, Let's dive in and explore the possibilities.

There are 2 basic approaches you can take. The first is to utilize randr which will allow you to create one large virtual display in which you can position your monitors. The second is to utilize xinerama which will allow you to have 3 separate X screens which will function as one large display. I will cover both here and you can decide which is more appropriate for your needs.


RandR - Resize and Rotate

The issue with XRandR is 2 fold in multi-monitor setups. It creates a large virtual display and each monitor gets a piece of it. If the total resolution is too high (2048 X 2048) it might not work... Framebuffer issues and such. You should be able to increase the fb size in xorg.conf but it comes at a performance loss iirc. Also, if the monitors are of different resolutions, there could potentially be areas that are either black, or windows fall off of your displays.

You can dynamically enable your multi-monitor setup by using XRandR

xrandr --output foo --rightof bar
xrandr --output baz --rightof foo

There is also a gui frontend for this called arandr which is in the 12.04 repos. I haven't tested it, but some have found it useful.

Or you could enable it statically in /etc/X11/xorg.conf.d/10-monitor.conf:

Section "Monitor"
  Identifier     "Monitor0"
EndSection

Section "Monitor"
  Identifier     "Monitor1"
  Option         "RightOf" "Monitor0" 
EndSection

Section "Monitor"
  Identifier     "Monitor2"
  Option         "RightOf" "Monitor1" 
EndSection

This method implies an randr setup. Again, there are some notable drawbacks if using xrandr with monitors of different resolutions. Windows may be improperly placed, there may be black areas on one screen, etc..



Xinerama

To enable xinerama you need to modify /etc/X11/xorg.conf:

Section "ServerFlags"
  Option    "Xinerama" "true"
EndSection

It might be as simple as that as X is pretty good about automagically configuring things based on hardware detection. But, if simply turning the xinerama extension on does not provide the functionality you desire, you may opt to fully configure X to use xinerama. There are a few ways to configure X. You could have multiple files in etc/X11/xorg.conf.d, some for your monitors, some for the devices, etc. I will cover having a single xorg.conf file that contains all the settings using a modified version of my current setup.

Section "ServerLayout"
    Identifier     "TriHead"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen0"
    Screen      2  "Screen1" RightOf "Screen1"
    Option         "Xinerama" "1"                # Enable xinerama on the whole
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"                      # Be sure to write the correct driver here
    VendorName     "NVIDIA Corporation"          # Should be "intel" 
    BoardName      "Nvidia GT 240"
    BusID          "PCI:1:0:0"                   # Use lscpi | grep VGA to get the BusID
    Screen          0                            # Note the Screen numbers
EndSection

Section "Device"
    Identifier     "Device1"                     # A device for each screen
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Nvidia GT 240"
    BusID          "PCI:1:0:0"
    Screen          1
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Nvidia 8600 GT"
    BusID          "PCI:1:0:0"
    Screen          2
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Gateway HX2000"
    HorizSync       31.0 - 83.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "DELL 1907FPV"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Unknown"
    ModelName      "DELL 1907FPV"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 76.0
    Option         "DPMS"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
EndSection

Section "Screen"
    Identifier     "Screen2"
    Device         "Device2"
    Monitor        "Monitor2"
    DefaultDepth    24
EndSection

Obviously you will need to modify this to suit your hardware, but the basic skeleton is there for you.

Do note that I have recently read that Intel might have issues with xinerama. You may find that it is just not a possibility. Please test the answer I have given and continue to explore additional possibilities as you may find additional information elsewhere.


On the HD4000 Integrated, as with some integrated chip-sets; HDMI is usually shared with a VGA/DVI circuit, at least functionally.

When I tried to use it and do what you are saying, I learned that one of the outputs could only be cloned but not separated.

So I believe if you (first) disable your VGA (native LCD on the laptop) and enable the external display, you will be able to get it working.