I recently obtained an HP xw8600 workstation with an E5420 series processor and two NVidia FX1700 dual head DVI video cards. This provides the ability for four monitors, which in this case, are four HP LP2065 1600x1200 pixel 20" LCD monitors.
Monday, October 27. 2008
NVidia/FX1700 on HP xw8600 with Debian/AMD64 Lenny
Getting these monitors to work together in XP was easy.
To do the same in Debian/Linux was, well, less easy. There was much trial and error. I think Gnome and KDE interact with the drivers differently. I think KDE has more flexibility, but ultimately I was able to get the driver/monitor combination working independently of which GUI solution I was using.
The fly in the ointment is that I want my monitors in portrait mode, rather than landscape mode. It was difficult figuring out if I needed Xinerama or xrandr to the job. More on this further down.
There are two basic steps to my installation: get the NVidia drivers installed, then get everything configured.
I used the current Lenny beta of Debian/AMD64 Net Installation (AMD64 is another misnomer, one needs the AMD64 version to run the Intel64 version, wouldn't there be a better name for this?) to get the operating system and graphics installed. I then went to Debian Wiki NvidiaGraphicsDrivers for inspiration on how to get the drivers installed. I would recommend not going there. The decision tree and instruction sets are not very well designed.
Instead, go to Pendrivelinux. The instructions are dead simple and accurate. The only change is that I downloaded the more recent 64 bit NVidia driver: NVidia NVIDIA-Linux-x86_64-177.80-pkg2.run.
Knowing about "apt-get install build-essential linux-headers-$(uname -r)" is good for installing a minimal build system after getting a minimal operating system installed.
Something else good to know is the ctl-alt-backspace to exit the GUI to a command line. All except gdm wants to start back up again. The solution for that is to open a terminal window, do a "ps aux | grep gdm" and then kill the process.
The hard part was getting the driver configured with portrait mode monitors. For configuration, the tool at Applications-> System Tools -> NVIDIA X Server Settings can be used. I had to resort to a few minor manual edits of /etc/X11/xorg.conf to make things work. In any case, some documentation stated that Xinerama wouldn't work for rotated monitors, and that I should use xrandr. In my case, the opposite is true. xrandr doesn't work, and Xinerama does work with a couple of manual xorg.conf tweaks.
When testing, a useful console command to start the GUI is: startx -- -layout Layout0
Here is my final xorg.conf file:
Section "ServerLayout" Identifier "Layout0" # a little out of order, but that is the order in which I plugged them Screen 0 "Screen0" 0 0 Screen 1 "Screen1" 2400 0 Screen 2 "Screen2" 1200 0 Screen 3 "Screen3" 3600 0 InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" EndSection Section "Files" EndSection Section "Module" Load "dbe" Load "extmod" Load "type1" Load "freetype" Load "glx" EndSection Section "ServerFlags" Option "Xinerama" "1" 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 "HP LP2065" HorizSync 30.0 - 92.0 VertRefresh 48.0 - 85.0 Option "DPMS" EndSection Section "Monitor" Identifier "Monitor3" VendorName "Unknown" ModelName "HP LP2065" HorizSync 30.0 - 92.0 VertRefresh 48.0 - 85.0 EndSection Section "Monitor" Identifier "Monitor1" VendorName "Unknown" ModelName "HP LP2065" HorizSync 30.0 - 92.0 VertRefresh 48.0 - 85.0 EndSection Section "Monitor" Identifier "Monitor2" VendorName "Unknown" ModelName "HP LP2065" HorizSync 30.0 - 92.0 VertRefresh 48.0 - 85.0 EndSection Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "Quadro FX 1700" BusID "PCI:96:0:0" Screen 0 EndSection Section "Device" Identifier "Device1" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "Quadro FX 1700" BusID "PCI:96:0:0" Screen 1 EndSection Section "Device" Identifier "Device2" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "Quadro FX 1700" BusID "PCI:128:0:0" Screen 0 EndSection Section "Device" Identifier "Device3" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "Quadro FX 1700" BusID "PCI:128:0:0" Screen 1 EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 # Option "RandRRotation" "on" # Option "Rotate" "right" Option "Rotate" "CW" Option "TwinView" "0" Option "TwinViewXineramaInfoOrder" "DFP-0" Option "metamodes" "DFP-0: 1600x1200 +0+0; DFP-0: nvidia-auto-select +0+0; DFP-0: 1440x900 +0+0; DFP-0: 1400x1050 +0+0; DFP-0: 1400x1050_70 + 0+0; DFP-0: 1400x1050_60 +0+0; DFP-0: 1280x1024 +0+0; DFP-0: 1280x1024_75 +0+0; DFP-0: 1280x1024_60 +0+0; DFP-0: 1280x960 +0+0; DFP-0: 1280x960_60 +0+0; DFP-0: 1280x800 +0+0; DFP-0: 1280x768 +0+0; DFP-0: 1152x864 +0+0; DFP-0: 1152x864_75 +0+0; DFP-0: 1152x768 +0+0; DFP-0: 1024x768 +0+0; DFP-0: 1024x768_75 +0+0; DFP-0: 1024x768_70 +0+0; DFP-0: 1024x768_60 +0+0; DFP-0: 960x720 +0+0; DFP-0: 960x600 +0+0; DFP-0: 960x600d60 +0+0; DFP-0: 928x696 +0+0; DFP-0: 89 6x672 +0+0; DFP-0: 840x525 +0+0; DFP-0: 832x624 +0+0; DFP-0: 800x600 +0+0; DFP-0: 800x600_85_0 +0+0; DFP-0: 800x600_75 +0+0; DFP-0: 800x600_72 +0+0; DFP- 0: 800x600_60 +0+0; DFP-0: 800x600_56 +0+0; DFP-0: 800x600d70 +0+0; DFP-0: 800x600d65 +0+0; DFP-0: 800x600d60 +0+0" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen3" Device "Device3" Monitor "Monitor3" DefaultDepth 24 # Option "RandRRotation" "on" # Option "Rotate" "right" Option "Rotate" "CW" Option "TwinView" "0" Option "metamodes" "DFP-1: nvidia-auto-select +0+0" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen1" Device "Device2" Monitor "Monitor1" DefaultDepth 24 # Option "RandRRotation" "on" # Option "Rotate" "right" Option "Rotate" "CW" Option "TwinView" "0" Option "metamodes" "DFP-0: nvidia-auto-select +0+0" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen2" Device "Device1" Monitor "Monitor2" DefaultDepth 24 # Option "RandRRotation" "on" # Option "Rotate" "right" Option "Rotate" "CW" Option "TwinView" "0" Option "metamodes" "DFP-1: nvidia-auto-select +0+0" SubSection "Display" Depth 24 EndSubSection EndSection