2 external displays on Thinkpad t430s with HD4000 graphics

10,626

Solution 1

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.

Solution 2

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.

Share:
10,626

Related videos on Youtube

Aaditya
Author by

Aaditya

Co-founder, project manager and developer at http://negative-network.com I work mostly with PHP (WordPress, Kohana), Zurb Foundation,and MySql. I also know Less/Sass, Java, and I like Multi-Agent System programming and simulation. Nice to meet you! :)

Updated on September 18, 2022

Comments

  • Aaditya
    Aaditya over 1 year

    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?

    • Admin
      Admin over 11 years
      What method are you using to enable multi-monitor?
    • Admin
      Admin over 11 years
      Well I use the "displays" from the ubuntu system preferences... The 3 screens are detected, I just cannot activate the 3 at the same time...
  • Aaditya
    Aaditya over 11 years
    Thanks for the leads I will try that during the weekend and let you know what worked and what didnt. Actually there's videos on youtube of people using 2 external displays with an hd4000, but with a portege, not a thinkpad... we'll see hopefully it can work! :)
  • Aaditya
    Aaditya over 11 years
    But what you're saying will only leave me with 2 screens working, but I'd like to have 2 external displays on top of my laptop's display...
  • TardisGuy
    TardisGuy over 11 years
    Unfortunately, I do not think that is possible: I mean the physical circuitry. The integrated boards were not designed for enthusiast use, but for casual use with dual monitors at best. However, I think you can clone one screen giving you 2 clones and 1 independent. But I could be wrong.
  • Aaditya
    Aaditya over 11 years
  • Anthony
    Anthony over 11 years
    @Piero So you have found an example of it working in a Windows setup. Have you attempted the setup in the provided answer?
  • TardisGuy
    TardisGuy over 11 years
    Intel has an HD4000 gpu too? ... thats annoying.
  • Aaditya
    Aaditya over 11 years
    No I'm overloaded with work atm, didnt have time to try it out... but Anthony I guess your answer is the only way to go about it... well on linux anyway...