Προς το περιεχόμενο

Εμπειρίες με τον X Server


drpaneas

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Λίγο καιρό είχα μία πολύ δύσκολη μέρα με τον X Server και νομίζω αξίζει να την μοιραστώ μαζί σας καθώς έχει αρκετό εκπαιδευτικό χαρακτήρα για εσάς, και πολλούς καφέδες για μένα :D

 

Όλα άρχισαν όταν προσπαθούσα να αναπαράγω κάποια bugs που σχετίζονται με το Xinerama... τα bugs αυτά είναι πλέον διορθωμένα. Λόγω δουλειάς έχω την τύχη να συνεργαζόμαι με τον director του Xorg αλλά και άλλους Xorg devs. Το θέμα τις επικοινωνίας με αυτούς τους ανθρώπους είναι το πιο δύσκολο κομμάτι. Μερικοί συνεργάζονται και σου δίνουν εύκολα πληροφορίες, και μερικοί άλλοι σου δίνουν 3 λέξεις, από τις οποίες δεν βγάζεις άκρη. Οπότε πρέπει να είσαι πολύ προσεκτικός στο 'τι' θα τους ρωτήσεις και 'πως' θα τους ρωτήσεις. Για καλή μου τύχη, τα παιδιά που εργάζονται πανω στο Xorg είναι αρκετά cool τύποι και συνενοήσιμοι. Το πρόβλημα είναι όταν πρεπει να μιλήσεις με kernel developer. Εκεί ... τα πράγματα είναι πολύ δύσκολα... τέλος παντων, ας μην πλατιάζω...

 

Δυστυχώς δεν μπορώ να σας πω με τι είχε να κάνει το bug, δεν σας ενδιαφέρει κι όλας. Αυτό που αρκεί να καταλάβετε είτε ότι το μόνο που ήθελα ήταν να έχω ένα setup με 3 οθόνες. Δηλαδή κάτι τέτοιο:

          ----------   ----------   ----------         |          | |          | |          |         | Monitor0 | | Monitor1 | | Monitor2 |         |          | |          | |          |          ----------   ----------   ----------             | |          | |          | |             | |          | |          | |            /   \        /   \        /   \            =====        =====        =====            DVI          HDMI          VGA              |           |             |               ------     |    ---------                     \    |   /                      \   |  /                     ===========                    | NVIDIA    |                    | GeForce   |                     ===========

Οχι αναγκαία nvidia κάρτα, αλλά οποιαδήποτε. Εκείνη την στιγμή, είχα εύκαιρη μία nVIDIA κάρτα, η οποία τύγχαινε να έχει 3 outputs. "Ω, μια χαρα", σκέφτηκα. Θα τελειώσουμε γρήγορα σήμερα.

 

1. Δοκιμάζοντας την τύχη μου με dynamic detection

------------------------------------------------------------------------

Πρώτα απο όλα, σιγουρευόμααι ότι δεν υπάρχει "/etc/X11/xorg.conf" και αν υπάρχει, το διαγράφω. Με αυτόν τον τρόπο ο X θα προσπαθήσει να ρυθμήσει τις displays αυτόματα. Συνδέω λοιπόν και τρεις οθόνες, βεβαιώνομαι ότι δεν υπάρχει static configuration (xorg.conf) και κάνω reboot. Μόλις λοιπόν μπούταρα στο Gnome session, βλέπω αυτό:

  ----------   ----------   ----------   |	    | |		 | |	      | | NoSignal | |  Mirror  | |  Mirror  | |	    | |		 | |	      |  ----------   ----------   ----------     | |	  | |	       | |     | |	  | |          | |    /   \	 /   \        /   \    =====	 =====        =====    DEAD           |		|		   |		|		    ------------ 		  Mirrored by default

Προφανώς αυτό δεν είναι το επιθυμητό σενάριο που θέλω. Οπότε φαντάζομαι ότι ο X δεν είναι τόσο έξυπνος after all, και θέλει να του πω excplicetely πως να οργανώσει ένα triple-head setup. Να πω σε αυτό το σημείο, ότι χρησιμοποιώ τους open source nvidia drivers, nouveau. Πάμε λοιπόν να δούμε πως θα φτιάξουμε αυτό το configuration...

 

2. Βρίσκοντας τα output names

--------------------------------------------

Καθώς είμαι συνδεμένος με στο gnome session, ανοίγω ένα terminal και βλέπω τα output names χρησιμοποιώντας την εντολή "xrandr -q" :

:~> xrandr -q

	Screen 0: minimum 320 x 200, current 1152 x 864, maximum 8192 x 8192

		DVI-I-1 connected (normal left inverted right x axis y axis)
		   1680x1050     59.88 +
		   1280x1024     75.02    60.02  
		   1152x864      75.00  
		   1024x768      75.08    60.00  
		   800x600       75.00    60.32  
		   640x480       75.00    60.00  
		   720x400       70.08  

		HDMI-1 connected 1152x864+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
		   1680x1050     59.95 +
		   1280x1024     75.02    60.02  
		   1152x864      75.00* 
		   1024x768      75.08    60.00  
		   800x600       75.00    60.32  
		   640x480       75.00    60.00  
		   720x400       70.08  

		VGA-1 connected 1152x864+0+0 (normal left inverted right x axis y axis) 527mm x 297mm
		   1920x1080     60.00 +
		   1600x900      59.98  
		   1280x1024     75.02    60.02  
		   1152x864      75.00* 
		   1024x768      75.08    60.00  
		   800x600       75.00    60.32  
		   640x480       75.00    60.00  
		   720x400       70.08

Οπότε, ετσι μπροώ να βρω ποια οθόνη, αναλογή σε ποιο output της κάρτα γραφικών μου. Οπως καταλαβαίνετε προφανώς η κάρτα γραφικών μου έχει τρεις εξόδους: DVI, VGA και HDMI, τώρα όμως ξέρω ακριβώς τα outputnames και σε ποιο display είναι συνδεμένα:

 

	Monitor0 --> DVI-I-1	Monitor1 --> HDMI-1	Monitor2 --> VGA-1

 

3. Δημιουργώντας ένα πολύ απλό xorg.conf

--------------------------------------------------------------

Σε πρώτη φάση λέω τον X Server να δημιουργήσει μόνος τους ένα πολύ basic 'xorg.conf'. Για να το κάνουμε αυτό κλείνουμε το  GUI, πηγαίνοντας απλά σε runlevel 3.

:~> telinit 3

Στην συνέχεια, πατάμε: CTRL+ALT+F1 για να πάμε στο πρώτο tty και κάνουμε login σαν root.  Tώρα λοιπόν ρωτάω τον X Server να σερβίρει ένα xorg.conf configuration file:

:~> X -configure

αυτό θα κάνει generate το αρχείο '/root/xorg.conf.new' με καποιο standard generic configuration. Οποίος στην περίπτωση μου ήταν αυτός:

	Section "ServerLayout"
		Identifier     "X.org Configured"
		Screen      0  "Screen0" 0 0
		InputDevice    "Mouse0" "CorePointer"
		InputDevice    "Keyboard0" "CoreKeyboard"
	EndSection

	Section "Files"
		ModulePath   "/usr/lib64/xorg/modules"
		FontPath     "/usr/share/fonts/misc:unscaled"
		FontPath     "/usr/share/fonts/Type1/"
		FontPath     "/usr/share/fonts/100dpi:unscaled"
		FontPath     "/usr/share/fonts/75dpi:unscaled"
		FontPath     "/usr/share/fonts/ghostscript/"
		FontPath     "/usr/share/fonts/cyrillic:unscaled"
		FontPath     "/usr/share/fonts/misc/sgi:unscaled"
		FontPath     "/usr/share/fonts/truetype/"
		FontPath     "built-ins"
	EndSection

	Section "Module"
		Load  "vnc"
		Load  "glx"
	EndSection

	Section "InputDevice"
		Identifier  "Keyboard0"
		Driver      "kbd"
	EndSection

	Section "InputDevice"
		Identifier  "Mouse0"
		Driver      "mouse"
		Option	    "Protocol" "auto"
		Option	    "Device" "/dev/input/mice"
		Option	    "ZAxisMapping" "4 5 6 7"
	EndSection

	Section "Monitor"
		Identifier   "Monitor0"
		VendorName   "Monitor Vendor"
		ModelName    "Monitor Model"
	EndSection

	Section "Device"
		### Available Driver options are:-
		### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
		### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
		### <percent>: "<f>%"
		### [arg]: arg optional
		#Option     "SWcursor"           	# [<bool>]
		#Option     "HWcursor"           	# [<bool>]
		#Option     "NoAccel"            	# [<bool>]
		#Option     "ShadowFB"           	# [<bool>]
		#Option     "VideoKey"           	# <i>
		#Option     "WrappedFB"          	# [<bool>]
		#Option     "GLXVBlank"          	# [<bool>]
		#Option     "ZaphodHeads"        	# <str>
		#Option     "PageFlip"           	# [<bool>]
		#Option     "SwapLimit"          	# <i>
		#Option     "AsyncUTSDFS"        	# [<bool>]
		#Option     "AccelMethod"        	# <str>
		Identifier  "Card0"
		Driver      "nouveau"
		BusID       "PCI:1:0:0"
	EndSection

	Section "Screen"
		Identifier "Screen0"
		Device     "Card0"
		Monitor    "Monitor0"
		SubSection "Display"
			Viewport   0 0
			Depth     1
		EndSubSection
		SubSection "Display"
			Viewport   0 0
			Depth     4
		EndSubSection
		SubSection "Display"
			Viewport   0 0
			Depth     8
		EndSubSection
		SubSection "Display"
			Viewport   0 0
			Depth     15
		EndSubSection
		SubSection "Display"
			Viewport   0 0
			Depth     16
		EndSubSection
		SubSection "Display"
			Viewport   0 0
			Depth     24
		EndSubSection
	EndSection

Όπως βλέπετε, πρόκειται για πολύ generic πράγματα. Για αυτόν τον λόγο, θα το αδυνατίσω λίγο σε μία πιο μικρή εκδοχή, καθώς έχει πολλές βλακίες μέσα που δεν χρειάζομαι:

	Section "ServerLayout"
		Identifier     "TripleHead Setup with nouveau"
		Screen      0  "Screen0" 0 0
	EndSection

	Section "Monitor"
		Identifier   "Monitor0"
	EndSection

	Section "Device"
		Identifier  "Card0"
		Driver      "nouveau"
		BusID       "PCI:1:0:0"
	EndSection

	Section "Screen"
		Identifier "Screen0"
		Device     "Card0"
		Monitor    "Monitor0"
	EndSection

Τι σημαίνουν αυτά που έγραψα;

----------------------------------------------

Πρώτα απο όλα χρειαζόμαστε ένα Monitor, το οποίο αντιστοιχεί στην φυσική οθόνη που έχω μπροστά μου. Κανονικά, θα έπρεπε να βάλω οτι θέλω να έχω 3 Monitors, αλλά σε πρώτη φάση είπαμε να φτιάξουμε ένα πολύ απλό xorg.conf που να δουλεύει. Στην συνέχεια θα αρχίσω να χτίζω πάνω του...

  ---------- |	    | Η λέξη "Identifier" είναι ένα πλό όνομα. Μπορείς να βάλεις ότι θέλεις | Monitor0 | Σε αυτό το guide, θα ακολουθήσω την εξής ονοματολογία:"Monitor<N>"  ----------     | |    /   \    =====

Στην συνέχεια, χρειάζεται να πούμε στον X Server ότι α συνδέσουμε αυτό το monitor στην κάρτα γραφικών μας και να κάνουμε χρήση του video driver:

   =================  |                 |   Σαν "Identifier" βάζουμε ό,τι θέλουμε.  | Card0	    |   Το σημαντικό είναι ο driver που είναι υπεύθυνος για την  |		    |   επικοινωνία μεταξύ της καρτας γραφικών και του Linux kernel.   =================    ||||||||| |||               --------- ----         ###########   | PCIe 01:00.0 | <--->  # nouveau # <---> KERNEL     --------- ----         ###########

Σημειώστε ότι ο X εντόπισε μόνος του ότι ο σωστός driver για την κάρτα γραφικών μου έχοντας 3D accel είναι ο nouveau. Αν σε μερικούς από εσάς εντοπίσει τον driver 'nv' να ξέρετε ότι αυτός είναι ο παλιός 2D driver και δεν υποστηρίζεται πλέον.

 

Για να είμαστε σίγουροι όμως, ας βεβαιωθούμε ότι όντως φορτώθηκε αυτός ο driver:

	:~> lsmod | grep drm

		drm_kms_helper         65670  1 nouveau
		drm                   335594  6 ttm,drm_kms_helper,nouveau

καθώς επίσης δείτε ότι ο nouveau χρησιμοποιείται τόσο σε userspace όσο και σε kernelspace ως driver για την κάρτα:

	:~ # lspci -nnk | grep -A3 VGA

		01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108 [GeForce GT 440] [10de:0de0] (rev a1)
			Subsystem: ASUSTeK Computer Inc. Device [1043:83b7]
			Kernel driver in use: nouveau
			Kernel modules: nouveau

παρατηρήστε επίσης ότι το PCI BusID είναι: "01:00.0". Αυτή την πληροφορία πρέπει να την αλλάξω λίγο πριν την βάλω στο xorg.conf ως εξής: "PCI:1:0:0". Το να γράψει κανείς αυτή την πληροφορία στο xorg.conf είναι optional, μόνο αν έχετε μόνο μία καρτα γραφικών στον υπολογιστή (ούτε internal graphics). Διαφορετικά η πληροφορία δεν είναι optional, αλλά υποχρεωτική. Στην δική μου περίπτωση έχω ένα Ivy Bridge μηχάνημα, αλλά έχω κλείσει την iGPU από το bios. Ωστόσο, just to be on the safe side, επειδή πάντα υπάρχει η πιθανότητα να ενεργοποιήσω τα embedded graphics, την έβαλα να υπάρχει. Βλέπετε, αν ενεργοποιήσω τα embedded τότε θα εχω 2 PCI buses:

  PCI:1:0:0 --> nVIDIA
  PCI:0:2:0 --> Intel Graphics

και δεν δεν έχω δηλώσει στο xorg.conf σε ποιο bus να τρεχει ο driver, τότε θα υπαρξει πρόβλημα.

 

Επίσης, καλό θα είναι να ξέρετε ποιος driver είναι υπεύθυνος για την κάρτα σας με τον τρόπο που το κάνει ο X. Αρχικά κοιτάζει το vendor code, όπου στην περίπτωση της nVIDIA είναι "0x10de" και την συνέχεια τον κωδικό του μοντέλου ""0x0d30" το οποίο σημαίνει GeForce GT 440. Ετσι λοιπόν, ελέγχει αυτούς τους κωδικούς, και έχει μία λίστα με το ποιος driver είναι υπεύθυνος για αυτόν τον κωδικό. Μπορείτε να μάθετε τους δικούς σας ψάχνοντας στις πληροφορίες του kernel που σχετίζονται με το PCI Bus:

	:~ # cat /sys/bus/pci/devices/0000\:01\:00.0/vendor 
	0x10de

	:~ # cat /sys/bus/pci/devices/0000\:01\:00.0/device 
	0x0de0

Τέλος πάντων, ας επιστρέψω στο xorg.conf. Το πρόβλημα, αν μπορεί να το χαρακτηρίσει κανείς ως τέτοιο είναι πως στην device section δεν μπορώ να πω ποιο Monitor θελω να χρησιμοποιηθεί για αυτό το device. Για αυτόν τον λόγο υπάρχει ένα άλλο section που λέγεται "Screen", το οποίο παίζει την δουλειά του διαμεσολαβητή, ενώνει δηλαδή της "Monitor" και "Device" sections.

 ------------------------------------------------------------------------------ |									    	| |	  -----------	   =================					| |	 |	     |    |		    |   				| Το screen είναι απλά ένα εικονικό |	 | Monitor 0 | 	  |	Card0	    |  					| interface που χρησιμοποιείται για  |	 |	     |	  |	            | 					| συνδέση την οθόνη με την κάρτα. |	  -----------	   =================					| |	     | |	    ||||||||| |||           				| |	    / 	\  	   --------- ----         ###########			| |	    =====	   | PCIe 01:00.0 | <--->  # nouveau # <---> KERNEL 	| |		           --------- ----         ###########			| |										| |		    Screen0							|  -------------------------------------------------------------------------------

Προσέξτε ότι μέχρι τώρα δεν έχω πει με ποιον τρόπο συνδέεται η card0 μέ την Monitor0. Το οποίο σημαίνει ότι μέχρι τωρα, ο X δεν γνωρίζει να η οθόνη που θέλω είναι η VGA-0, DVI-I-1 ή HDMI-1. Για την ώρα λοιπόν θα αφήσω τον X Server να αποφασίει μόνος του, όποια θέλει.

 

Τέλος, δεν ξεχνάω να γράψω την Layout Section. Αυτή χρησιμοποιείται για να τοποθετήσουμε τα screens στην σωστή θέση. Για την ώρα έχουμε μόνο ένα Monitor, άρα αφού είναι το μοναδικό που έχουμε, θα πρέπει να το ορίσουμε και σαν το primary screen.

		Screen      0  "Screen0" 0 0

                            ^            ^ ^
                            |            | |
     Primary ---------------             | | σχετικές συντενταγμένες (x horizontal, y vertical)
                              x ---------  | που σημαίνουν τέρμα πάνω αριστερά στην οθόνη
                              y -----------

4. Ξεκινώντας τον X Server

--------------------------------------

Για να ξεκινήσουμε τον X Server έχουμε 2 τρόπους να το κάνουμε:

 

1) Βάζοντας το αρχείο στην σωστή θέση:

:~> cp xorg.conf.new /etc/X11/xorg.conf

και μετά ξεκινάμε τον X:

:~> X

2) ή απλά λέμε τον X να διαβάζει αυτό το configuration file ως παράμετρος (προτίνεται, μια και τεστάρουμε για την ώρα) :

:~> X -config /root/xorg.conf.new

Αφού ξεκινήσει, ας δούμε αν ο X Server χρησιμοποιήσε τα ίδια outputnames με το XRandR:

	:~> grep "Output.*connected" /var/log/Xorg.0.log

		[  3409.088] (II) NOUVEAU(0): Output DVI-I-1 connected
		[  3409.088] (II) NOUVEAU(0): Output HDMI-1 connected
		[  3409.088] (II) NOUVEAU(0): Output VGA-1 connected

και η απαντηση είναι: ναι, τα ίδια χρησιμοποιεί.

Θυμάστε που σας ειπα πριν οτι δεν θα πω στον X Server τι outputname να χρησιμοποιήσει για το ένα και μοναδικό για την ώρα primary monitor που εχω; Ας δουμε λοιπόν τι πιστεύει ο X, αν δεν του το δώσω γραπτώς:

	[  7177.781] (II) NOUVEAU(0): Output DVI-I-1 using monitor section Monitor0
	[  7177.813] (II) NOUVEAU(0): Output HDMI-1 has no monitor section
	[  7177.845] (II) NOUVEAU(0): Output VGA-1 has no monitor section

Αχά, ώστε ο X Server πιστεύει ότι το Monitor0 είναι συνδεμένο με DVI. Το οποίο είναι σωστό, αλλά αυτό ήταν καθαρά τυχαίο (ή μηπως όχι; ). Τέλος πάντων, ας μην χανουμε χρόνο, και ας δούμε τι ανάλυση διάλεξε ο X:

	[  7177.945] (II) NOUVEAU(0): Output DVI-I-1 using initial mode 1152x864
	[  7177.945] (II) NOUVEAU(0): Output HDMI-1 using initial mode 1152x864
	[  7177.945] (II) NOUVEAU(0): Output VGA-1 using initial mode 1152x864

Χμ, βγάζει νοήμα η αποφαση του αν κοιτάξετε το output του xrandr λιγο πιο πανω. Εκει θα δειτε οτι η υψηλοτερη αναλυση που υποστηρίζουν και οι 3 οθόνες μου ειναι 1152x864. Ναι, εχω οθόνη που παίζει 1920x1080 αλλά οι άλλες δυο δεν μπορουν, οπότε δεν μπορεί καθε οθόνη να έχει ότι ανάλυση θελει. Αν ειναι να παιξουν και οι τρεις, πρεπει να εχουν την ιδια. Αυτό σκέφτηκε ο X Server. Προφανώς και μπορώ να εχω ο,τι αναλυση θελω σε καθε οθονη, αλλά τώρα ερμηνεύουμε το πως σκέφτεται το auto-probing του.

 

Χμ, καλα ως εδω πιστεύω. Ας ξεκινήσω το gnome να δω τι θα γίνει. Αλλα πριν το κανω, πρεπει να βαλω το αρχείο στην σωστη θεση (της επιλογης μου να διαλεξω τον 2ο τροπο εκκινησης του X νωριτερα) :

:~> cp xorg.conf.new /etc/X11/xorg.conf

και μετά σε γραφικό περιβάλλον (aka runlevel 5)

:~> telinit 5

Πφφ, τζίφος. Ακόμα βλέπω το ίδιο αποτέλεσμα (με εκείνο χωρίς το xorg.conf). Ας σιγουρευτούμε καταρχάς ότι ο X Server έλαβε υπόψη του το configuration:

	[  7848.626] (==) Using config file: "/etc/X11/xorg.conf"

ναι το ελαβε, το αρχειο ειναι το σωστο.

	[  7848.627] (==) ServerLayout "TripleHead Setup with nouveau"
	[  7848.627] (**) |-->Screen "Screen0" (0)
	[  7848.627] (**) |   |-->Monitor "Monitor0"
	[  7848.627] (**) |   |-->Device "Card0"

ναι και το setup ειναι αυτο που εβαλα. Αν προσπαθήσουμε να κανουμε force το Monitor0 να είναι DVI-I-1 και να δούμε τι θα γίνει. Παω λοιπον στο 'device section' και προσθετω την γραμμη:

	Option      "Monitor-DVI-I-1"   "Monitor0"

και βλεπω τι συμβαίνει. Για να το τεστάρω αυτό ακολουθώ παλι την ίδια διαδικασία:

  1. Αλλάζω το /etc/X11/xorg.conf
  2. telinit 3
  3. Ξεκινάω τον X ( /usr/bin/X )
  4. Παω στο tty1 ( ctrl+alt+f1)
  5. σκοτώνω τον X ( ctrl+c)
  6. βλεπω τα logs ( vi /var/log/Xorg.0.log )
  7. telinit 5

Χμ, παλι δεν άλλαξε κατι. Τα ίδια αποτελέσματα...

 

5. Βελτιστοποιώντας το xorg.conf

-----------------------------------------------

Ας δοκιμάσουμε να βαλουμε και τα 3 monitors:

	Section "Monitor"
		Identifier   "Monitor0"
	EndSection

	Section "Monitor"
		Identifier   "Monitor1"
	EndSection

	Section "Monitor"
		Identifier   "Monitor2"
	EndSection

και ας συνδέσουμε τα monitors στην καρτα γραφικών συμφωνα με το ακολουθο :

	Section "Device"
		Identifier  "Card0"
		Driver      "nouveau"
		BusID       "PCI:1:0:0"
		Option      "Monitor-DVI-I-1"   "Monitor0"
		Option      "Monitor-HDMI-1"    "Monitor1"
		Option      "Monitor-VGA-1"     "Monitor2"
	EndSection

κανω ξανα τεστ... Τα ίδια αποτελέσματα (από το gnome) αλλά τα logs αλλαξαν:

	[  8893.423] (II) NOUVEAU(0): Output DVI-I-1 using monitor section Monitor0
	[  8893.455] (II) NOUVEAU(0): Output HDMI-1 using monitor section Monitor1
	[  8893.487] (II) NOUVEAU(0): Output VGA-1 using monitor section Monitor2

Το οποίο ειναι σωστό, επειδή:

		  ----------   ----------   ----------  		 |	    | |		 | |	      |		 | Monitor0 | | Monitor1 | | Monitor2 |		 |	    | |		 | |	      |		  ----------   ----------   ----------		     | |	  | |	       | |		     | |	  | |          | |		    /   \	 /   \        /   \		    =====	 =====        =====		    DVI          HDMI          VGA		      |           |		|		       ------  	  |    ---------			     \	  |   /			      \	  |  /			     ===========			    | NVIDIA	|			    | GeForce	|			     ===========

Ας ελεξω και αν ειναι ολες συνδεμένες:

	[  8893.587] (II) NOUVEAU(0): Output DVI-I-1 connected
	[  8893.587] (II) NOUVEAU(0): Output HDMI-1 connected
	[  8893.587] (II) NOUVEAU(0): Output VGA-1 connected

είναι συνδεμένες. Τοτε γιατι μωρη μλκια ακόμα βλέπω το εξης; :

		  ----------   ----------   ----------  
		 |	    | |		 | |	      |
		 | NoSignal | |  Mirror  | |  Mirror  |
		 |	    | |		 | |	      |
		  ----------   ----------   ----------
		     | |	  | |	       | |
		     | |	  | |          | |
		    /   \	 /   \        /   \
		    =====	 =====        =====

		    DEAD           |		|
				   |		|
				    ------------ 
				  Mirrored by default

Ας ριξω παλι μια ματια στα logs:

	[  8893.587] (II) NOUVEAU(0): Output DVI-I-1 using initial mode 1152x864
	[  8893.587] (II) NOUVEAU(0): Output HDMI-1 using initial mode 1152x864
	[  8893.587] (II) NOUVEAU(0): Output VGA-1 using initial mode 1152x864

Λοιπόν, ας προσπαθήσω να απενεργοποιήσω τις mirrored (Monitor1 kai Monitor2)

βάζοντας αυτη τη γραμμη στα αντίστοιχα "Monitor" sections τους:

Option       "Ignore"   "True"

οποτε θα ειναι ετσι:

	Section "Monitor"
		Identifier   "Monitor0"
	EndSection

	Section "Monitor"
		Identifier   "Monitor1"
		Option       "Ignore"   "True"
	EndSection

	Section "Monitor"
		Identifier   "Monitor2"
		Option       "Ignore"   "True"
	EndSection

και συνεχίζω το testing...

 

Ναιιιι! Yeeeeah! Επιτέλους μία φορά που ο X server εκανε αυτό που του είπα να κανει:

		  ----------   ----------   ----------  		 |	    | |		 | |	      |		 | Working  | | Disabled | | Disabled |		 |	    | |		 | |	      |		  ----------   ----------   ----------		     | |	  | |	       | |		     | |	  | |          | |		    /   \	 /   \        /   \		    =====	 =====        =====		   Monitor0     Monitor1     Monitor2		    DVI          HDMI          VGA,

Ας δούμε τι άλλαξε στα logs:

	[  9346.246] (II) NOUVEAU(0): Output DVI-I-1 using monitor section Monitor0
	[  9346.278] (II) NOUVEAU(0): Output HDMI-1 using monitor section Monitor1
	[  9346.278] (**) NOUVEAU(0): Option "Ignore" "True"
	[  9346.310] (II) NOUVEAU(0): Output VGA-1 using monitor section Monitor2
	[  9346.310] (**) NOUVEAU(0): Option "Ignore" "True"

το οποίο είναι σωστό (δειτε το configuration που μολις εκανα), αλλά προσέξτε επίσης ότι τώρα το HDMI-1 και το  VGA-1 είναι μαρκαρισμένα με την επιλογή 'Ignore'.

	[  9346.346] (II) NOUVEAU(0): Output DVI-I-1 connected

το οποίο εχει σαν αποτέλεσμα να φαινεται και να ειναι connected μόνο το DVI-I-1

	[  9346.346] (II) NOUVEAU(0): Output DVI-I-1 using initial mode 1680x1050    

και προφανώς αφού είναι η μόνη οθόνη, επιλέγει την μεγαλύτερη ανάλυση για αυτήν που ειναι 1680x1050. Δεν διαλέγει την χαμηλότερη 1152x864 που εβαλε πριν, διότι δεν υπάρχει 2η οθόνη για την κανει sync με αυτην. Ολα λογικά μεχρι στιγμής.

 

Οπότε guys, λεω να δοκιμάσω να αφήσω μόνο το VGA απενεργοποιημένο, να δούμε τι θα γίνει. Για να το κάνω αυτο, αφαιρώ το 'ignore' από το monitor1.

	Section "Monitor"
		Identifier   "Monitor0"
	EndSection

	Section "Monitor"
		Identifier   "Monitor1"
	EndSection

	Section "Monitor"
		Identifier   "Monitor2"
		Option       "Ignore"   "True"
	EndSection

τεστάρω... και...

Δουλεύει !!!! Δείτε τα αποτελέσματα:

		  ----------   ----------   ----------  		 |	    | |		 | |	      |		 | Primary  | | 2ndary   | | Disabled |		 |	    | |		 | |	      |		  ----------   ----------   ----------		     | |	  | |	       | |		     | |	  | |          | |		    /   \	 /   \        /   \		    =====	 =====        =====		   Monitor0     Monitor1     Monitor2		    DVI          HDMI          VGA

ας δούμε και τα logs:

	[ 10227.375] (II) NOUVEAU(0): Output DVI-I-1 using monitor section Monitor0
	[ 10227.407] (II) NOUVEAU(0): Output HDMI-1 using monitor section Monitor1
	[ 10227.439] (II) NOUVEAU(0): Output VGA-1 using monitor section Monitor2
	[ 10227.439] (**) NOUVEAU(0): Option "Ignore" "True"

το οποίο είναι σωστό. Μόνο το Monitor2 (VGA) είναι απενεργοποιημένο.

[ 10227.507] (II) NOUVEAU(0): Output DVI-I-1 connected
[ 10227.507] (II) NOUVEAU(0): Output HDMI-1 connected

οριστε ξανα κι αλλη επαλήθευση. Το VGA-1 ειναι disconnected ;)

[ 10227.507] (II) NOUVEAU(0): Using exact sizes for initial modes
[ 10227.507] (II) NOUVEAU(0): Output DVI-I-1 using initial mode 1680x1050
[ 10227.507] (II) NOUVEAU(0): Output HDMI-1 using initial mode 1680x1050

επισης, οι δυο οθονες μου υποστηριζουν και οι δύο 1680x1050. Προφανως η VGA ειναι που δεν επαιζε πριν σε αυτην τη αναλυση και ο λογος του downscale.

 

Οπότε, το dual-head λειτουργεί.  Τι σκ@τ@ συμβαίνει και παει στραβά όταν ζητάω να εχω όχι 2 αλλά 3 monitors connected; Για την ώρα το μόνο που μπορώ να πω ειναι οτι αλλάζει η τοποθεσία. Δηλαδή όταν εχω 2 οθόνες είναι λογικό η μία να ειναι αριστερά και η αλλη δεξια. Στο configuration μου, η βασικη οθονη ειναι η αριστερη (monitor0). Αυτο το επιβεβαιώνει και το gnome tool:

	Monitor0 ---> Primary
	Monitor1 ---> Secondary

οποτε σκέφτομαι και λεω οτι ισως πρεπει να δηλώσω με το χέρι που θα τοποθετηθεί το τρίτο monitor στον X Server:

	Section "Monitor"
		Identifier   "Monitor0"
	EndSection

	Section "Monitor"
		Identifier   "Monitor1"
	EndSection

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

ας το τεσταρουμε...

Λοπον, όχι ακριβως οτι περιμενα...

		  ----------   ----------   ----------  		 |	    | |		 | |	      |		 | NoSignal | | Primary  | | 2ndary   |		 |	    | |		 | |	      |		  ----------   ----------   ----------		     | |	  | |	       | |		     | |	  | |          | |		    /   \	 /   \        /   \		    =====	 =====        =====		   Monitor0     Monitor1     Monitor2		    DVI          HDMI          VGA

ας δουμε τα logs:

	[ 10778.986] (II) NOUVEAU(0): Output DVI-I-1 using monitor section Monitor0
	[ 10779.018] (II) NOUVEAU(0): Output HDMI-1 using monitor section Monitor1
	[ 10779.050] (II) NOUVEAU(0): Output VGA-1 using monitor section Monitor2
	[ 10779.050] (**) NOUVEAU(0): Option "RightOf" "Monitor1"

σωστα.

	[ 10779.151] (II) NOUVEAU(0): Output DVI-I-1 connected
	[ 10779.151] (II) NOUVEAU(0): Output HDMI-1 connected
	[ 10779.151] (II) NOUVEAU(0): Output VGA-1 connected

ξανα σωστα.

	[ 10779.151] (II) NOUVEAU(0): Using user preference for initial modes
	[ 10779.151] (II) NOUVEAU(0): Output DVI-I-1 using initial mode 1680x1050
	[ 10779.151] (II) NOUVEAU(0): Output HDMI-1 using initial mode 1680x1050
	[ 10779.151] (II) NOUVEAU(0): Output VGA-1 using initial mode 1600x900

Το τριτο monitor χρησιμοποιεί διαφορετική αναλυση (δεν υποστηριζει 1680x1050) οπως ειχα μαντέψει πριν. Λοιπόν, ας δοκιμάσω αλλο placement μπας και ...

	Section "Monitor"
		Identifier   "Monitor0"
	EndSection

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

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

δοκιμαζω... τίποτα... τα ίδια...

 

Να μην σας ταλαιπωρώ, μετά από πολύ τεστ στο xorg.conf τελικά δεν καταφερα να ενεργοποιήσω και τις 3 οθόνες μου. Αλλά τουλάχιστον βρήκα το πρόβλημα, το οποίο είναι το CRTC. Η κάρτα μου έχει 2 CRTCs, το οποίο σημαίνει ότι έχει 2 rendering pipelindes. Με απλά λόγια, σημαίνει οτι υποστηρίζει μόνο 2 display output ports ενεργοποιημένες ταυτόχρονα. Η πληροφορία αυτή φαινεται στο xrandr:

	:~> xrandr --verbose | grep CRTC

		CRTCs:      0 1
		CRTC:       0
		CRTCs:      0 1
		CRTC:       1

το οποίο σημαίνει:

	Monitor0 (DVI)  --> Supports: 0 and 1 --> Enabled: κανένα , για αυτο ειναι σβηστή
	Monitor1 (HDMI) --> Supports: 0 and 1 --> Enabled: 0 (Working)
	Monitor1 (VGA)  --> Supports: 0 and 1 --> Enabled: 1 (Working)

Να γιατί ο X Server κανει disable μία εκ των τριων displays, επειδή η καρτα δεν έχει αρκετά CRTCs να χρησιμοποιήσει. Οποτε, ειμαι καταδικασμένος να μην μπορώ ποτέ να εχω 3 οθόνες ταυτόχρονα ανοιχτές με αυτην την κάρτα γραφικών. Πού να το φανταστώ; Βλεπω μια καρτα με 3 outputs, πού να ξέρω οτι παιζουν μόνο τα 2 από τα 3 αν τα συνδέσεις και 3. Εγω περιμενα να παιζουν και τα 3 και πηρα τα ...

 

6. Dualhead setup

--------------------------

Αφου λοιπόν μπορω να παιξω μονο με 2 καρτες γραφικων, δειτε λιγο οσοι σαν ενδιαφερει πως μπορειτε νε σεταρετε ενα dual-head με το χερι:

		  ----------   ----------   ----------  		 |	    | |		 | |	      |		 | Primary  | | Secondary| |   Off    |		 |	    | |		 | |	      |		  ----------   ----------   ----------		     | |	  | |	       | |		     | |	  | |          | |		    /   \	 /   \        /   \		    =====	 =====        =====		   Monitor0     Monitor1     Monitor2		    DVI          HDMI          VGA

Θα ξεκινησω με:

	Section "ServerLayout"
		Identifier     "DualHead Setup with nouveau"    # Let's change the name from triple to dual
		Screen      0  "Screen0" 0 0
	EndSection

	Section "Monitor"
		Identifier   "Monitor0"
		Option       "Primary"  "True"			# Force Monitor0 to be the Primary one
	EndSection

	Section "Monitor"
		Identifier   "Monitor1"
		Option       "RightOf"  "Monitor0"		# This is going to be the secondary display
	EndSection

	Section "Monitor"
		Identifier   "Monitor2"
		Option       "RightOf"  "Monitor1"
		Option       "Ignore"   "True"			# Turn this off (no CRTC left)
	EndSection

	Section "Device"
		Identifier  "Card0"
		Driver      "nouveau"
		BusID       "PCI:1:0:0"
		Option      "Monitor-DVI-I-1"   "Monitor0"
		Option      "Monitor-HDMI-1"    "Monitor1"
		Option      "Monitor-VGA-1"     "Monitor2"
	EndSection


	Section "Screen"
		Identifier "Screen0"
		Device     "Card0"
		Monitor    "Monitor0"
	EndSection

Ας το τεστάρουμε... Ολα καλα. Λειτουργει οπως πρεπει:

		  ----------   ----------   ----------  		 |	    | |		 | |	      |		 | Primary  | | Secondary| |   Off    |		 |	    | |		 | |	      |		  ----------   ----------   ----------		     | |	  | |	       | |		     | |	  | |          | |		    /   \	 /   \        /   \		    =====	 =====        =====		   Monitor0     Monitor1     Monitor2		    DVI          HDMI          VGA

και τα logs:

	[ 66561.307] (II) NOUVEAU(0): Output DVI-I-1 using monitor section Monitor0
	[ 66561.307] (**) NOUVEAU(0): Option "Primary" "True"
	[ 66561.339] (II) NOUVEAU(0): Output HDMI-1 using monitor section Monitor1
	[ 66561.339] (**) NOUVEAU(0): Option "RightOf" "Monitor0"
	[ 66561.371] (II) NOUVEAU(0): Output VGA-1 using monitor section Monitor2
	[ 66561.371] (**) NOUVEAU(0): Option "RightOf" "Monitor1"
	[ 66561.371] (**) NOUVEAU(0): Option "Ignore" "True"
	...
	...
	...
	[ 66561.440] (II) NOUVEAU(0): Output DVI-I-1 connected
	[ 66561.440] (II) NOUVEAU(0): Output HDMI-1 connected

ολα σωστά. Οπως ειπα και πριν, εκλεισα την 3η οθονη (Monitor1) λογω περιορισμού στο hardware (2 CRTCs) :

	[ 66561.371] (II) NOUVEAU(0): 2 crtcs needed for screen.
	[ 66561.375] (II) NOUVEAU(0): Allocated crtc nr. 0 to this screen.
	[ 66561.375] (II) NOUVEAU(0): Allocated crtc nr. 1 to this screen.

Οντως ο X Server χρησιμοποιεί τα 2 CRTCs στο screen μου:

			------------------------	CRTC 0 --->    |	  		| 	CRTC 1 --->    |  Monitor0     Monitor1	|		       |			|			------------------------			          | |				  | |				 /   \				 =====

Ας δουμε τι αναλυση διαλεξε ο X αυτοματα:

[ 66561.440] (II) NOUVEAU(0): Using user preference for initial modes
[ 66561.440] (II) NOUVEAU(0): Output DVI-I-1 using initial mode 1680x1050
[ 66561.440] (II) NOUVEAU(0): Output HDMI-1 using initial mode 1680x1050

όπως το περίμενα, διαλεξε 1680x1050 επειδη ειναι η πιο μεγαλη αναλυση που υποστηρίζεται εξίσου απο τις 2 μεμονεμα οθόνες μου.

 

Το 'τρικ' που μαρεσει εδω ειναι οτι χρησιμοποιώ μόνο μία screen, το οποιο μου επιτρέπει να σερνω παραθυρα απο την μια οθονη στην αλλη, καθως μοιραζονται το ιδιο screen (screen0) και δεν εχει καθε μια το δικο της. Με πιο τεχνικα λογια, με αυτον τροπο υπαρχει μονο μια DISPLAY env μεταβλητη και για την δυο οθονες μου. Ο τεχνικος ορος ειναι 'visual screen' που χρησιμοποιείται για την ενοποίηση οθονες σε μεγαλύτερη αναλυση:

		        1680 + 1680 = 3360		-----------------------------	       |  -----------   -----------  |	       | |	     | |	   | |	       | | 1680x1050 | | 1680x1050 | |	       | |	     | |	   | |	       |  -----------   -----------  |	       |     | |	   | |	     |	       |     | |	   | |       |	       |    /   \	  /   \      |	       |    =====	  =====      |	        -----------------------------			   |   |			   |   |			  /     \			 /	 \			 =========                      Visual Screen 3360x1050

οποτε αν οι υπολογισμοι μου ειναι σωστοί και συμφωνα με τα logs:

	[ 66561.440] (--) NOUVEAU(0): Virtual size is 3360x1050 (pitch 0)

οντως ειναι σωστοι.

Οποτε ο X server διαλεξε το σωτο mode και τα συνδιασε ολα μαζι:

	[ 66561.440] (**) NOUVEAU(0):  Driver mode "1680x1050": 146.2 MHz (scaled from 0.0 MHz), 65.3 kHz, 60.0 Hz
	[ 66561.440] (II) NOUVEAU(0): Modeline "1680x1050"x60.0  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync (65.3 kHz eP)

Αν ειχα προβλημα και δεν εβρισκε το βελτιστο mode, θα επρεπε να το γραψω στο xorg.conf. Αλλα πρωτα πρεπει να ξερω την λιστα που υποστηριζει καθε οθονη μου:


	:~ # xrandr 

		DVI-I-1 connected primary 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
		   1680x1050     59.88*+
		   1280x1024     75.02    60.02  
		   1152x864      75.00  
		   1024x768      75.08    60.00  
		   800x600       75.00    60.32  
		   640x480       75.00    60.00  
		   720x400       70.08 
 
		HDMI-1 connected 1680x1050+1680+0 (normal left inverted right x axis y axis) 473mm x 296mm
		   1680x1050     59.95*+
		   1280x1024     75.02    60.02  
		   1152x864      75.00  
		   1024x768      75.08    60.00  
		   800x600       75.00    60.32  
		   640x480       75.00    60.00  
		   720x400       70.08

οποτε για τις οθονες μου το καλυτερο mode ειναι το [email protected]

Για να κανω generate αυτη την 'modeline' χρησιμοποιω το εργαλειο 'gtf'

	gtf 1680 1050 59.95

	  # 1680x1050 @ 59.95 Hz (GTF) hsync: 65.17 kHz; pclk: 147.01 MHz
	  Modeline "1680x1050_59.95"  147.01  1680 1784 1968 2256  1050 1051 1054 1087  -HSync +Vsync

και μετά το βάζω στο xorg.conf

Στην περιπτωση μου αυτο ειναι περιττο γιατι ο X βρηκε ηδη το optimal στην περιπτωση μου, αλλα δεν ειναι ακριβως 100% optimized στα μετρα μου:

	X Server    ---> Modeline "1680x1050"x60.0  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync (65.3 kHz eP)
	gtf version ---> Modeline "1680x1050_59.95"  147.01  1680 1784 1968 2256  1050 1051 1054 1087  -HSync +Vsync

οποτε αν θελω να ειμαι υπερβολικα σωστος το βαζω μεσα στο xorg.conf :

	Section "ServerLayout"
		Identifier     "DualHead Setup with nouveau"
		Screen      0  "Screen0" 0 0
	EndSection

	Section "Monitor"
		Identifier   "Monitor0"
		Option       "Primary"  "True"
		Modeline     "1680x1050_59.95"  147.01  1680 1784 1968 2256  1050 1051 1054 1087  -HSync +Vsync # The gtf version
		Option       "PreferredMode"    "1680x1050_59.95"						# Tell X to pick the gtf version
	EndSection

	Section "Monitor"
		Identifier   "Monitor1"
		Option       "RightOf"  "Monitor0"
		Modeline     "1680x1050_59.95"  147.01  1680 1784 1968 2256  1050 1051 1054 1087  -HSync +Vsync # same
		Option       "PreferredMode"    "1680x1050_59.95"						# same
	EndSection

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

	Section "Device"
		Identifier  "Card0"
		Driver      "nouveau"
		BusID       "PCI:1:0:0"
		Option      "Monitor-DVI-I-1"   "Monitor0"
		Option      "Monitor-HDMI-1"    "Monitor1"
		Option      "Monitor-VGA-1"     "Monitor2"
	EndSection


	Section "Screen"
		Identifier "Screen0"
		Device     "Card0"
		Monitor    "Monitor0"

		SubSection "Display"		# Define the Virtual screen
                  Depth     24			# 24 is kind of a default nowadays
		  Virtual   3360 1050		# The visual screen resolution
		EndSubSection

	EndSection

τεσταρω...

 

Ολα καλα! Βλεπω τα logs:

	[ 74689.115] (II) NOUVEAU(0): Using user preference for initial modes
	[ 74689.115] (II) NOUVEAU(0): Output DVI-I-1 using initial mode 1680x1050_59.95
	[ 74689.115] (II) NOUVEAU(0): Output HDMI-1 using initial mode 1680x1050_59.95

αχα, ωστε ο X διαλεξε την δικη μου modeline. Αψογα !

	[ 74689.115] (--) NOUVEAU(0): Virtual size is 3360x1050 (pitch 0)
	[ 74689.115] (**) NOUVEAU(0):  Mode "1680x1050_59.95": 147.0 MHz (scaled from 0.0 MHz), 65.2 kHz, 59.9 Hz
	[ 74689.115] (II) NOUVEAU(0): Modeline "1680x1050_59.95"x59.9  147.01  1680 1784 1968 2256  1050 1051 1054 1087 -hsync +vsync (65.2 kHz UP)

Ωραια ολα αυτα... αλλα ρε παιδια εγω ηθελα triple-head setup. Οποτε τι εκανα; Παραγγελνω μια καινουρια radeon. Προσπαθω... προσπαθω... παλι τα ιδια.. τι εφταιγε; Η καρτα ειχε ελατωματικο port.  Για ονομα του Θεου τι γκαντεμια ειναι αυτη! καινουρια καρτα, με faulty VGA port. Την εστειλα πίσω προφανώς την ιδια μερα στο  Amazon, αλλα in the meantime χρησιμοποιησα ως 3η οθονη μεσω την embedded intel.

 

3 οθονες: 2 nvidia + 1 intel:

          ----------   ----------   ----------         |          | |          | |          |         | Monitor0 | | Monitor1 | | Monitor2 |         |          | |          | |          |          ----------   ----------   ----------             | |          | |          | |             | |          | |          | |            /   \        /   \        /   \            =====        =====        =====            DVI          HDMI          VGA              |           |             |               ------     |             |                     \    |             |                      \   |             |                     ===========     =======                    | NVIDIA    |   | Intel |                    | GeForce   |   | IGPU  |                     ===========     -------

δηλαδη:

Section "ServerLayout"
  Identifier	"X-TripleHead with intel and nv drivers - using Xinerama"					
  Screen        0  "IntelScreen" 			
  Screen       	1  "NVidiaScreenRight" rightof "IntelScreen" 
  Screen       	2  "NVidiaScreenLeft"  leftof "IntelScreen" 
  Option       	"Clone" "off"
  Option       	"Xinerama" "off"
  InputDevice   "Mouse" "CorePointer"
  InputDevice   "Keyboard" "CoreKeyboard"
EndSection

Section "ServerFlags"
  Option       "AllowMouseOpenFail" "on"
  Option       "ZapWarning" "on"
EndSection


#####################################################################################################################


Section "Files"
  ModulePath   "/usr/lib64/xorg/modules/updates"
  ModulePath   "/usr/lib64/xorg/modules"
  FontPath     "/usr/share/fonts/misc:unscaled"
  FontPath     "/usr/share/fonts/truetype/"
  FontPath     "/usr/share/fonts/TTF/"
  FontPath     "/usr/share/fonts/OTF"
  FontPath     "/usr/share/fonts/Type1/"
  FontPath     "/usr/share/fonts/100dpi:unscaled"
  FontPath     "/usr/share/fonts/75dpi:unscaled"
EndSection


######################################################################################################################


Section "Module"
  Load         "dri"
  Load         "dbe"
# Load         "freetype" # Module does not exist, so it fails to load
  Load         "extmod"
  Load         "glx"
EndSection


Section "DRI"
    Group      "video"
    Mode       0660
EndSection


######################################################################################################################


Section "InputDevice"
  Identifier  "Keyboard"
  Driver      "kbd"
  Option       "Protocol" "Standard"
  Option       "XkbLayout" "us"
  Option       "XkbModel" "microsoftpro"
  Option       "XkbRules" "xfree86"
EndSection



Section "InputDevice"
  Identifier  "Mouse"
  Driver      "mouse"
  Option      "Protocol" "auto"
  Option      "Device" "/dev/input/mice"
  Option       "Name" "Belkin Mouse"
  Option       "Protocol" "explorerps/2"
  Option       "Vendor" "Sysp"
  Option      "ZAxisMapping" "4 5 6 7"
EndSection


########################################################################################################################


Section "Monitor"
  Identifier   "OneBigMonitor4AllScreens"
  VendorName   "DELL"
  ModelName    "E228WFP" 				# Monitor connected to NVIDIA (Primary PEG selected from BIOS)
  Option       "CalcAlgorithm" "XServerPool"
  HorizSync    31-94
  VertRefresh  50-75
  UseModes     "Modes[0]"
  Option       "CalcAlgorithm" "XServerPool"
  Option       "DPMS"
EndSection


Section "Modes"
  Identifier   "Modes[0]"
EndSection


#########################################################################################################################


Section "Screen"
  Identifier   "IntelScreen"
  Device       "IntelCard"
  Monitor      "OneBigMonitor4AllScreens"
  DefaultDepth 24
EndSection


Section "Screen"
  Identifier   "NVidiaScreenRight"
  Device       "NVidiaCardRight"
  Monitor      "OneBigMonitor4AllScreens"
  DefaultDepth 24
EndSection


Section "Screen"
  Identifier   "NVidiaScreenLeft"
  Device       "NVidiaCardLeft"
  Monitor      "OneBigMonitor4AllScreens"
  DefaultDepth 24
EndSection


###########################################################################################################################


Section "Device"
  Identifier   "IntelCard"
  Driver       "intel"
  BoardName    "Ivy Bridge HD Graphics 4000"
  VendorName   "Intel"
  BusID	       "PCI:0:2:0"
EndSection


Section "Device"
  Identifier   "NVidiaCardRight"
  Driver       "nv"
  BoardName    "GeForce GT 240"
  VendorName   "NVidia"
  BusID	       "PCI:1:0:0"
  Screen       0
EndSection

Section "Device"
  Identifier   "NVidiaCardLeft"
  Driver       "nv"
  BoardName    "GeForce GT 240"
  VendorName   "NVidia"
  BusID	       "PCI:1:0:0"
  Screen       1
EndSection

2 οθονες: 1 nvidia, 1 intel:


Section "ServerLayout"
  Identifier	"X-DualHead with intel and nv drivers - using Xinerama"					
  Screen        0  "IntelScreen" 					 
  Screen       	1  "NVidiaScreen" rightof "IntelScreen" 		
  Option       	"Clone" "off"
  Option       	"Xinerama" "off"
  InputDevice   "Mouse" "CorePointer"
  InputDevice   "Keyboard" "CoreKeyboard"
EndSection

Section "ServerFlags"
  Option       "AllowMouseOpenFail" "on"
  Option       "ZapWarning" "on"
EndSection


#####################################################################################################################


Section "Files"
  ModulePath   "/usr/lib64/xorg/modules/updates"
  ModulePath   "/usr/lib64/xorg/modules"
  FontPath     "/usr/share/fonts/misc:unscaled"
  FontPath     "/usr/share/fonts/truetype/"
  FontPath     "/usr/share/fonts/TTF/"
  FontPath     "/usr/share/fonts/OTF"
  FontPath     "/usr/share/fonts/Type1/"
  FontPath     "/usr/share/fonts/100dpi:unscaled"
  FontPath     "/usr/share/fonts/75dpi:unscaled"
EndSection


######################################################################################################################


Section "Module"
  Load         "dri"
  Load         "dbe"
# Load         "freetype" # Module does not exist, so it fails to load
  Load         "extmod"
  Load         "glx"
EndSection


Section "DRI"
    Group      "video"
    Mode       0660
EndSection


######################################################################################################################


Section "InputDevice"
  Identifier  "Keyboard"
  Driver      "kbd"
  Option       "Protocol" "Standard"
  Option       "XkbLayout" "us"
  Option       "XkbModel" "microsoftpro"
  Option       "XkbRules" "xfree86"
EndSection



Section "InputDevice"
  Identifier  "Mouse"
  Driver      "mouse"
  Option      "Protocol" "auto"
  Option      "Device" "/dev/input/mice"
  Option       "Name" "Belkin Mouse"
  Option       "Protocol" "explorerps/2"
  Option       "Vendor" "Sysp"
  Option      "ZAxisMapping" "4 5 6 7"
EndSection


########################################################################################################################


Section "Monitor"
  Identifier   "OneBigMonitor4AllScreens"
  VendorName   "DELL"
  ModelName    "E228WFP" 				# Monitor connected to NVIDIA (Primary PEG selected from BIOS)
  Option       "CalcAlgorithm" "XServerPool"
  HorizSync    31-94
  VertRefresh  50-75
  UseModes     "Modes[0]"
  Option       "CalcAlgorithm" "XServerPool"
  Option       "DPMS"
EndSection


Section "Modes"
  Identifier   "Modes[0]"
EndSection


#########################################################################################################################


Section "Screen"
  Identifier   "IntelScreen"
  Device       "IntelCard"
  Monitor      "OneBigMonitor4AllScreens"
  DefaultDepth 24
EndSection


Section "Screen"
  Identifier   "NVidiaScreen"
  Device       "NVidiaCard"
  Monitor      "OneBigMonitor4AllScreens"
  DefaultDepth 24
EndSection


###########################################################################################################################


Section "Device"
  Identifier   "IntelCard"
  Driver       "intel"
  BoardName    "Ivy Bridge HD Graphics 4000"
  VendorName   "Intel"
  BusID	       "PCI:0:2:0"
EndSection


Section "Device"
  Identifier   "NVidiaCard"
  Driver       "nv"
  BoardName    "GeForce GT 240"
  VendorName   "NVidia"
  BusID	       "PCI:1:0:0"
EndSection

Ολα καλα τελικα με το bug :P

Επεξ/σία από drpaneas
  • Like 12
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 


Οπότε guys, λεω να δοκιμάσω να αφήσω μόνο το HDMI απενεργοποιημένο, να δούμε τι θα γίνει. Για να το κάνω αυτο, αφαιρώ το 'ignore' από το monitor1.

 

Νομιζω εννοεις το VGA

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωραιο, οταν ειχα δυο οθονες ειχα βολευτει με το arandr. Ειχα φτιαξει και ενα σκριπτακι και ανοιγοκλεινα τη δευτερη οποτε ηθελα

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...