External Monitor Troubles -- Dell U2412M w/ Thinkpad W530

Hello all,

I’m fairly new to openSUSE, and unfortunately have virtually no experience with setting up hardware/drivers/etc, so hopefully someone can bear with me. I have suse version 13.1, with GNOME Shell, installed on a relatively new Thinkpad W530. The external monitor in question is a Dell UltraSharp U2412M… I currently have it connected via VGA. The monitor came with a CD including drivers, but they are in .INF format, and, of course, the only instructions and support provided by Dell are specifically for Windows.

In any case, the output from running ‘xrandr -q’ is:


Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 32767 x 32767
LVDS2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1920x1080      60.0*+   50.0  
   1400x1050      60.0  
   1280x1024      60.0  
   1280x960       60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

I take this to mean that the monitor isn’t being recognized at all [the monitor’s screen is on, and the monitor itself did auto-detect the VGA connection]. And accordingly, there’s only one monitor shown by my Display settings. I tried, in vain, to mirror the screen with ‘xrandr --output LVDS2 --auto --output VGA2 --auto --same-as LVDS2’, but this doesn’t seem to have any effect.

Incase my graphics card information is relevant, the result of running ‘/sbin/lspci -nnk | grep VGA -A2’ is:


00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09)
    Subsystem: Lenovo Device [17aa:21f5]
    Kernel driver in use: i915
--
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107GLM [Quadro K1000M] [10de:0ffc] (rev a1)
    Subsystem: Lenovo Device [17aa:21f5]
    Kernel driver in use: nouveau

I’ve spent quite a few hours at this, trying to at least figure out what exactly it is that I don’t know how to do to, but I’m having little success. If anyone can provide some help, I would be very grateful. I’m obviously happy to provide any more pertinent information as needed.

Thanks for your time.

You have two incompatible video chips. Seems to be getting common these days. You need to use Bumblebee to take advantage of them. Do a search here for Bumblebee there are many thread that discuss it.

00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09)
Subsystem: Lenovo Device [17aa:21f5]
Kernel driver in use: i915

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107GLM [Quadro K1000M] [10de:0ffc] (rev a1)
Subsystem: Lenovo Device [17aa:21f5]
Kernel driver in use: nouveau

I’ve spent quite a few hours at this, trying to at least figure out what exactly it is that I don’t know how to do to, but I’m having little success. If anyone can provide some help, I would be very grateful. I’m obviously happy to provide any more pertinent information as needed.

Thanks for your time.

You have a hybrid graphics system, so I think this needs special treatment. I know little about this hardware, so it may pay to read up on it first.

http://en.opensuse.org/SDB:NVIDIA_Bumblebee

http://smithfarm-thebrain.blogspot.co.nz/2013/10/opensuse-131-nvidia-optimus-bumblebee.html

This Archlinux wiki page may also be useful to you as its very thorough with configuration or enabling/disabling the graphics cards, and handling of multiple monitors

https://wiki.archlinux.org/index.php/bumblebee#Installing_Bumblebee_with_Intel.2FNouveau

Thanks, both of you, for the links and suggestions. I’ll give Bumblebee a try, and will post my solution if I can get it to work.

What output do you have for:

ls -la /sys/class/drm/card?

and

ls /sys/class/drm/*/status | xargs -I {} -i bash -c "echo -n {}: ; cat {}"

By default, one protocol Screen is assigned to one graphics adapter (fancy way of saying two graphics adapters can’t work together in one X Display server Screen). Instead, what you find is that the X Display server sets up two Screens (each driven by a respective graphics adapter). The xrandr command you passed defaults to Screen 0 … if you pass the appropriate parameter for the second Screen, xrandr should show you the info for the outputs attached to the other graphics adapter.

In recent times, new capabilities in the X server and graphics stacks allow for the joining of protocol Screens into a single unified desktop (and which completely obsoletes older technology (read: xinerama) that attempted to resolve the underlining problem).

Bumblebee is something different than what I just mentioned, but it is, in essence, a solution that stems from the same fundamental problem described above.

Another point is that recent kernels have brought about even further advancements/enhancements with dynamic real time power mgmt for system’s with hybrid graphics … fancy way of saying that an adapter that is not being used is powered down on the fly.

Tyler,

Thanks for that great explanation! I actually got it working pretty quickly. Here’s the output you suggested looking at:


ross@linux-liw7:~> ls -la /sys/class/drm/card?
lrwxrwxrwx 1 root root 0 Feb  7 03:06 /sys/class/drm/card0 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
lrwxrwxrwx 1 root root 0 Feb  7 03:06 /sys/class/drm/card1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card1


ross@linux-liw7:~> ls /sys/class/drm/*/status | xargs -I {} -i bash -c "echo -n {}: ; cat {}"
/sys/class/drm/card0-DP-1/status:disconnected
/sys/class/drm/card0-DP-2/status:disconnected
/sys/class/drm/card0-DP-3/status:disconnected
/sys/class/drm/card0-LVDS-1/status:disconnected
/sys/class/drm/card0-VGA-1/status:connected
/sys/class/drm/card1-LVDS-2/status:connected
/sys/class/drm/card1-VGA-2/status:disconnected

So at this point your answer made things very clear… xrandr was only recognizing card1 as a provider. This actually turned out to be a pretty easy thing to fix. Just to detail it for other possible readers:


ross@linux-liw7:~> xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x8f cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 3 associated providers: 0 name:Intel
Provider 1: id: 0x68 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 4 outputs: 5 associated providers: 0 name:nouveau

To add the other provider:


ross@linux-liw7:~> xrandr --setprovideroutputsource 1 0

Now xrandr recognizes the other outputs:


ross@linux-liw7:~> xrandr -q
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 32767 x 32767
LVDS2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1920x1080      60.0*+   50.0  
   1400x1050      60.0  
   1280x1024      60.0  
   1280x960       60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
LVDS-1-1 disconnected (normal left inverted right x axis y axis)
VGA-1-1 connected (normal left inverted right x axis y axis)
   1920x1200      60.0 +
   1920x1080      60.0  
   1600x1200      60.0  
   1680x1050      60.0  
   1280x1024      60.0  
   1280x960       60.0  
   1024x768       60.0  
   800x600        60.3  
   640x480        60.0  
   720x400        70.1  
DP-1-1 disconnected (normal left inverted right x axis y axis)
DP-1-2 disconnected (normal left inverted right x axis y axis)
DP-1-3 disconnected (normal left inverted right x axis y axis)

So then all I had to do was use VGA-1-1 as the desired output:


ross@linux-liw7:~> xrandr --output LVDS2 --auto --output VGA-1-1 --auto --right-of LVDS2

It looks like I still need to work on tweaking the settings a bit, as there is currently some annoying mouse/window tracing, glitchy video playing, etc… but it’s certainly working much better than before! Thanks again!

Thanks for sharing your xrandr config with us. I’m sure that it will be helpful to others! :slight_smile: