ubuntuusers.de

Externe Grafikkarte an Thinkpad S430, Konfigurationsproblem

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

Slowly

Anmeldungsdatum:
29. Juni 2011

Beiträge: Zähle...

Hallo ubuntuuser,

ich habe ein Problem mit meiner etwas ausgefallen Hardware-Konfiguration unter Ubuntu 12.04.

Ich habe ein Thinkpad S430, daran ist per Thunderbolt eine Geforce GTX 560Ti angeschlossen. (Die ins Notebook integrierte 620m ist bios-seitig deaktiviert). Unter Win7x64 sieht es dann wie folgt aus: Die 560Ti steuert einen externen Monitor per Dvi an und über Optimus (und die 4000Hd) wird das Bild zurück ins S430 geschleift. Das zurückschleifen scheint unter Ubuntu mangels "echtem" Optimus nicht möglich zu sein, ist jedoch für mich auch nicht notwendig. Mir würde es reichen den an die externe Grafikkarte angeschlossenen Monitor ansteuern zu können (momentan per vga, sollte aber keinen Unterschied machen).

Meine bisherige Vorgehensweise sieht dabei wie folgt aus:

1. per Systemeinstellungen/Fremdtreiber den Nvidia-Betatreiber (310) installiert / per apt-get install nvidia-current den aktuellen Treiber beziehen ( die beiden Vorgehensweisen liefern das Gleiche ergebnis). Fremdtreiber sagt, der Treiber sei aktiv, jedoch nicht in Benutzung 2. nvidia-settings aufrufen, dieses kann nicht erkennen das die Nvidia-Treiber verwendet werden und verweist mich auf nvidia-xconfig 3. nvidia-xconfig erstellt eine neue xorg.conf 4. nvidia-settings hat das gleiche Ergebnis wie vorher

nvidia-detector stürzt davon abgesehen leider immer ab

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
root@Olli-S430:~# nvidia-detector 
Traceback (most recent call last):
  File "/usr/bin/nvidia-detector", line 8, in <module>
    a = NvidiaDetection(printonly=True, verbose=False)
  File "/usr/lib/python2.7/dist-packages/NvidiaDetector/nvidiadetector.py", line 68, in __init__
    self.getData()
  File "/usr/lib/python2.7/dist-packages/NvidiaDetector/nvidiadetector.py", line 149, in getData
    driver_version = self.__get_value_from_name(stripped_package_name)
  File "/usr/lib/python2.7/dist-packages/NvidiaDetector/nvidiadetector.py", line 87, in __get_value_from_name
    v = int(name)
ValueError: invalid literal for int() with base 10: 'experimental-304'

Ich denke, das Problem liegt dasran, dass das nvidia-settings auf einem per nvidia gesteuertem Monitor laufen muss; bzw das die Gtx 560 Ti das interne Display nicht ansteuern kann. Ich fürchte, die xorg.conf muss so geändert werden, das sowohl 2 Grafikkarten als auch Displays konfiguriert werden müssen. Da fängt jedoch mein Problem an, da ich bisher nur mit linux als Server gearbeitet habe und folglich keine Erfahrung mti x11 habe.

Folgende Daten sind sicher noch interressant:

1
2
3
root@Olli-S430:~# lspci | grep NVIDIA
11:00.0 VGA compatible controller: NVIDIA Corporation GF110 [GeForce GTX 560 Ti] (rev a1)
11:00.1 Audio device: NVIDIA Corporation GF110 High Definition Audio Controller (rev a1)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
root@Olli-S430:~# cat /etc/X11/xorg.conf
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 304.48  (buildmeister@swio-display-x86-rhel47-05.nvidia.com)  Sun Sep  9 21:29:02 PDT 2012

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

#Section "Monitor"
#    Identifier     "Monitor0"
#    VendorName     "Unknown"
#    ModelName      "Unknown"
#    HorizSync       28.0 - 33.0
#    VertRefresh     43.0 - 72.0
#    Option         "DPMS"
#EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    BusId	   "PCI:11:0:0"       # von mir hinzugefügt, macht leider auch keinen Unterschied
    VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

(Monitor ist auskommentiert, da ich ansonsten nur vga Auflösung auf dem internen Display habe)

1
2
3
4
5
6
root@Olli-S430:~# lspci -v | perl -ne '/VGA/../^$/ and /VGA|Kern/ and print' 
00:02.0 VGA compatible controller: Intel Corporation Ivy Bridge Graphics Controller (rev 09) (prog-if 00 [VGA controller])
	Kernel driver in use: i915
	Kernel modules: i915
11:00.0 VGA compatible controller: NVIDIA Corporation GF110 [GeForce GTX 560 Ti] (rev a1) (prog-if 00 [VGA controller])
	Kernel modules: nvidia_current, nvidia_experimental_310, nvidia_experimental_304, nouveau, nvidiafb
1
2
root@Olli-S430:~# cat /var/log/Xorg.0.log | grep nvidia_drv.so 
[    14.697] (II) Loading /usr/lib/x86_64-linux-gnu/xorg/extra-modules/nvidia_drv.so

Die Tools xrandr und arandr konnten mir leider auch nicht helfen, xrandr --auto verändert nichts und arandr sieht nur das interne Display.

Daher denke ich, das ich nur mit einer entsprechend konfiguerierten xorg.conf weiterkomme - liege ich damit richtig ?

Ich hoffe ihr könnt mir helfen, da mir erstmal nichts mehr einfällt - danke für eure Mühen im Vorraus !

Gruß

Letalis_Sonus Team-Icon

Anmeldungsdatum:
13. April 2008

Beiträge: 12990

Wohnort: Oldenburg/Erlangen

Slowly schrieb:

Ich denke, das Problem liegt dasran, dass das nvidia-settings auf einem per nvidia gesteuertem Monitor laufen muss; bzw das die Gtx 560 Ti das interne Display nicht ansteuern kann.

Genau so sieht es aus. Heutzutage ist bei Optimus ja die Nvidia GPU gerade völlig eigenständig und hat keinerlei Einbindung zum Rest des Systems, die Einbindung der Bildschirme wird einfach über Treiber-Hacks realisiert. Egal ob nun interne oder externe GPU, letztendlich hast du in diesem Blickwinkel immer noch ein Optimus System - dementsprechend lässt sich die Karte und deren Anschlüsse nur genauso schlecht nutzen wie eine echte Optimus Nvidia GPU. Wer weiß, vielleicht funktioniert ja sogar Bumblebee mit dieser Konfiguration...

Slowly

(Themenstarter)

Anmeldungsdatum:
29. Juni 2011

Beiträge: 5

Daher wird es wohl auf ein Zwei Grafikkarten - Zwei Monitore System hinauslaufen, denn ich denke, dass ein Ansteuern eines an die externe Grafikkarte angeschlossenen Monitors auf jeden Fall möglich sein muss.

Ich habe nun festgestellt, dass lspci Hex Zahlen liefert und xorg.conf lieber Dezimalzahlen mag, damit wird aus der 11 eine 17 und statt das nichts passiert, startet Ubuntu nun im low-grafics mode.

Es sollte also klappen, wenn ich die xorg.conf nur richtig konfiguriert bekomme.

Slowly

(Themenstarter)

Anmeldungsdatum:
29. Juni 2011

Beiträge: 5

Juhu, jetzt hat es endlich geklappt den externen Monitor über die GTX 560 Ti anzusteuern, jedoch gibts noch kleine Probleme. Ich habe nvidia-current und nvidia-experimental-304 entfernt und benutze nun nvidia-experimental-310. Folgende xorg.conf habe ich mir mal zusammengebastelt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 304.48  (buildmeister@swio-display-x86-rhel47-05.nvidia.com)  Sun Sep  9 21:29:02 PDT 2012

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    Screen      1  "Screen1"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
   # VendorName     "Unknown"
   # ModelName      "Unknown"
   # HorizSync       28.0 - 33.0
   # VertRefresh     43.0 - 72.0
   # Option         "DPMS"
EndSection

Section "Monitor"
   Identifier     "Monitor1"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    BusId	   "PCI:17:0:0"
    VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

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

Nun läuft Unity auf meinem externen Monitor an der 560Ti, jedoch kann ich maximal 1360x768 laufen lassen, obgleich der Monitor 1680x1050 unterstüzt. Darüber hinaus wird das interne Notebookdisplay wohl vom HD4000 des Core i5 angesteuert, jedoch sehe ich da nur einen Cursor (also Terminal ohne X), kann jedoch auch nicht darauf wechseln.

Wie kann ich diese Probleme beheben respektive was muss noch in die xorg.conf ?

Letalis_Sonus Team-Icon

Anmeldungsdatum:
13. April 2008

Beiträge: 12990

Wohnort: Oldenburg/Erlangen

Schau dir mal Xinerama an, das ist zwar verbuggt ohne Ende und ist inkompatibel mit der Composite Erweiterung (→ kein Compiz/Unity3D), entspricht aber wohl eher deiner Wunschkonfiguration. GPU-übergreifende Bildschirmkonfigurationen sind anders kaum möglich, man kann höchstens 2 für sich eigenständige X Screens definieren, aber das ist sehr schwierig zu konfigurieren und sehr umständlich in der Bedienung.

Weiterhin hast du noch ein Problem: Der Nvidia Treiber ersetzt diverse Systemkomponenten durch eigene, welche zu den freien Treibern inkompatibel sind. Dazu gehört nicht nur die OpenGL Bibliothek, sondern etwa auch das GLX Modul vom X Server. Hardwarebeschleunigung kriegst du so überhaupt nicht mehr aus der Intel GPU.

Slowly

(Themenstarter)

Anmeldungsdatum:
29. Juni 2011

Beiträge: 5

Ich denke, dass ich eher in Richtung zweier eigenständiger X-Server tendiere, das Notebookdisplay wird im Desktopbetrieb eher für Thunderbird oder nen Stream genutzt (← maximal Belastung). Sehe ich das richtig, das bei normalem Optimus (also integrierte Nvidia im Notebook) das Notebook-Display nicht direkt angesprochen werden kann ? Dann würde mir die integrierte 620m wohl auch nicht helfen ?

Kann die Beschleunigung der HD4000 noch genutzt werden, wenn die externe Grafikkarte nicht verbunden ist, also wenn die Nvidia Treiber nicht geladen sind ?

Und was muss ich in die xorg.conf Eintragen, um den Monitor mit 1680x1050 zu betreiben ?

Letalis_Sonus Team-Icon

Anmeldungsdatum:
13. April 2008

Beiträge: 12990

Wohnort: Oldenburg/Erlangen

Slowly schrieb:

Sehe ich das richtig, das bei normalem Optimus (also integrierte Nvidia im Notebook) das Notebook-Display nicht direkt angesprochen werden kann ? Dann würde mir die integrierte 620m wohl auch nicht helfen ?

So siehts aus - es fehlt die physikalische Verbindung zum Notebook Bildschirm. Man muss die gerenderten Bilder dem Intel Grafikchip unterschieben, der dann die Darstellung übernehmen muss.

Slowly schrieb:

Kann die Beschleunigung der HD4000 noch genutzt werden, wenn die externe Grafikkarte nicht verbunden ist, also wenn die Nvidia Treiber nicht geladen sind ?

Die Konfiguration ist statisch, ob der Treiber geladen wird oder nicht ist egal, der Rest vom System hat immer dessen Komponenten vorliegen. Die Komponenten müssen komplett vom Rest des Systems getrennt werden, so wie es auch Bumblebee realisiert. Wirklich voneinander getrennte X Server kannst du auch nur mit eigener Tastatur und Maus erreichen, welche umständlich auf die X Server aufgeteilt werden müssen. Ansonsten hat man bloß 2 X Screens die auf dem gleichen Server laufen - dann kann man die Komponenten nicht voneinander trennen.

Slowly schrieb:

Und was muss ich in die xorg.conf Eintragen, um den Monitor mit 1680x1050 zu betreiben ?

Schau dir dazu mal XServer Modelines an.

Antworten |