Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Howto setup a 120Hz SM22R33RZ with nvidia drivers
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Documentation, Tips & Tricks
View previous topic :: View next topic  
Author Message
krinn
Watchman
Watchman


Joined: 02 May 2003
Posts: 7470

PostPosted: Sun Sep 18, 2011 5:58 pm    Post subject: Howto setup a 120Hz SM22R33RZ with nvidia drivers Reply with quote

Hi, as i have just brought this monitor and as it was a misery to make it run like at 120Hz, here's an howto do it with all steps i've done to achieve it (so someone with another monitor model might follow them to achieve that with his monitor too)
I won't speak about 3D output, as i don't brought it for that, but just to get a monitor that refresh closer to what my poor old Vision Master Pro was doing and saved my eyes, so i don't own 3D glasses.

step1: Finding the monitor EDID infos

Actually this step is not really necessary, because just forcing the 120Hz is enough to make it work as nvidia drivers will query EDID to get that value, but i like to know what are these settings to know what i could try for other modeline in non-native resolution. You can just skip to step 2 without setting any modeline infos and this should work.

I've found a program in the tree (emerge -a read-edid) that should read EDID infos from the monitor and tell me what i need to configure xorg, great !
But for some reason, the program wasn't able to read the infos
Code:
get-edid
get-edid: get-edid version 2.0.0

   Performing real mode VBE call
   Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
   Function supported
   Call successful

   VBE version 300
   VBE string at 0x2110 "NVIDIA"

VBE/DDC service about to be called
   Report DDC capabilities

   Performing real mode VBE call
   Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
   Function supported
   Call successful

   Monitor and video card combination does not support DDC1 transfers
   Monitor and video card combination does not support DDC2 transfers
   0 seconds per 128 byte EDID block transfer
   Screen is not blanked during DDC transfer

Reading next EDID block

VBE/DDC service about to be called
   Read EDID

   Performing real mode VBE call
   Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
   Function supported
   Call failed

The EDID data should not be trusted as the VBE call failed
Error: output block unchanged

After (hours) of search in google, and testing, i've found a simple solve, nvidia-settings have an option to save the edid infos it get from the monitor.
Here's where to get it (i will gave it anyway, but it's for people with a different monitor that wish get it the same way i did)
- Goto GPU0 (well the gpu where the monitor is attach to)
- Select the monitor (should be DFP-0 or DFP-1, monitor name is show there)
- And hit the "Acquire EDID" button
Now select binary format to save the EDID infos (because if you choose the text format, you'll get an hex dump of the edid, not something useful for human, and this text format also cannot be use with parse-edid that comes with get-edid program).
Now that we have the good edid infos in binary format, parse-edid is able to tell us the infos we are seeking (show for ones that don't own an nvidia but still need the EDID infos) :
Code:
parse-edid < edid.bin
parse-edid: parse-edid version 2.0.0
parse-edid: EDID checksum passed.

   # EDID version 1 revision 3
Section "Monitor"
   # Block type: 2:0 3:fd
   # Block type: 2:0 3:fc
   Identifier "SyncMaster"
   VendorName "SAM"
   ModelName "SyncMaster"
   # Block type: 2:0 3:fd
   HorizSync 30-190
   VertRefresh 56-125
   # Max dot clock (video bandwidth) 330 MHz
   # Block type: 2:0 3:fc
   # Block type: 2:0 3:ff
   # DPMS capabilities: Active off:yes  Suspend:no  Standby:no

   Mode    "1680x1050"   # vfreq 59.883Hz, hfreq 64.674kHz
      DotClock   119.000000
      HTimings   1680 1728 1760 1840
      VTimings   1050 1053 1059 1080
      Flags   "-HSync" "+VSync"
   EndMode
   # Block type: 2:0 3:fd
   # Block type: 2:0 3:fc
   # Block type: 2:0 3:ff
EndSection

Finally we get the infos we need now

Step 2: Setting your xorg.conf
I'll show you only the part that are need, other settings are upto you, the only thing important is to use 1680x1050_120 (because if you notice i've change the modeline name to 1680x1050_120 in it)
Code:

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Samsung"
    ModelName      "SM2233RZ"
    HorizSync       30.0 - 190.0
    VertRefresh     56.0 - 125.0
    Option         "dpms"
    # SM2233RZ 1680x1050 vfreq 59.883Hz, hfreq 64.674kHz
    Modeline "1680x1050_120" 119.00 1680 1728 1760 1840 1050 1053 1059 1080 -HSync +VSync
EndSection

Section "Screen"
    Option         "MetaModes" "1680x1050_120"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Note to ones using multi-display as me, the correct option is :
Code:
    Option         "MetaModes" "1680x1050_120,1680x1050_120; NULL, 1680x1050_120; 1680x1050_120, NULL"


Step 3: Restart the server with the new config
And check current monitor settings....
Code:
 nvidia-settings --query [gpu:0]/RefreshRate[DFP-0]
  Attribute 'RefreshRate' (beleg:0[gpu:0]; display device: DFP-0): 59,88 Hz.
    'RefreshRate' is an integer attribute.
    'RefreshRate' is a read-only attribute.
    'RefreshRate' is display device specific.
    'RefreshRate' can use the following target types: X Screen, GPU, Display
    Device.

LOL it still doesn't work.
This time google gave me the answer, it's because nvidia drivers always start with GPU scaling enable for each monitor, and this prevent the monitor to work by itself.
All google answers says you need to load the nvidia-settings config file while booting : ie make the config file without the GPU scaling enable, quit (it autosave it), and use nvidia-settings -l
But because on my computer the nvidia-settings bug when using the -l switch, it try to use the display from my host:display instead of using the DISPLAY env return value
Code:
ERROR: Cannot open display 'beleg:0.0'.
cat ~/.nvidia-settings-rc | grep GPUScaling
beleg:0.0/GPUScaling[DFP-0]=65537
beleg:0.0/GPUScaling[DFP-1]=131073
env | grep DISPLAY
DISPLAY=:0.0
So because of that and because i frankly don't care to check everytime i run the nvidia-settings GUI if it reenable the GPU scaling shit everytime, i will use the direct query instead (and it's possible hopefuly !).
This will do what we need, and specially without that bug.

Step 4: Disabling GPU Scaling
You will have to run that evertime X is run, so find where you wish add it, for me i simply add it as a start program in gnome.
And you will have to do that for each monitors (DFP-0 and DFP-1 if you have two)
Code:
nvidia-settings -a [gpu:0]/GPUScaling[DFP-0]=1,1
  Attribute 'GPUScaling' (beleg:0[gpu:0], display device: DFP-0) assigned value
  1,1.


And now we can re-check again the monitors settings (or use your monitor info panel)
Code:
nvidia-settings --query [gpu:0]/RefreshRate[DFP-0]
  Attribute 'RefreshRate' (beleg:0[gpu:0]; display device: DFP-0): 120,00 Hz.
    'RefreshRate' is an integer attribute.
    'RefreshRate' is a read-only attribute.
    'RefreshRate' is display device specific.
    'RefreshRate' can use the following target types: X Screen, GPU, Display
    Device.


And now xrandr and xvidtune output to show how X see that. xvidtune show twice Dot Clock speed, but it could just be because i use two monitors, and xrandr is lost, gnome screen size use the xrandr info, and will then only allow you to get frequencies report by xrandr.
Code:
xvidtune -show
"3360x1050"   238.46   3360 1728 1760 1840   1050 1053 1059 1080 +hsync +vsync
xrandr -q
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1024 x 768, current 3360 x 1050, maximum 3360 x 1050
default connected 3360x1050+0+0 0mm x 0mm
   3360x1050      50.0*
   1680x1050      51.0 
   1024x768       52.0 


And actual results from xorg.log (with my current settings, but it should gave you an idea of the result)
Code:
[ 57603.706] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
[ 57603.706] (**) NVIDIA(0): Option "HWcursor" "true"
[ 57603.706] (**) NVIDIA(0): Option "TVStandard" "PAL-N"
[ 57603.706] (**) NVIDIA(0): Option "RenderAccel" "true"
[ 57603.706] (**) NVIDIA(0): Option "TwinView" "true"
[ 57603.706] (**) NVIDIA(0): Option "TwinViewOrientation" "LeftOf"
[ 57603.706] (**) NVIDIA(0): Option "MetaModes" "1680x1050_120,1680x1050_120; NULL, 1680x1050_120; 1024x768, NULL"
[ 57603.706] (**) NVIDIA(0): Option "AllowGLXWithComposite" "1"
[ 57603.706] (**) NVIDIA(0): Option "AddARGBGLXVisuals" "True"
[ 57603.706] (**) NVIDIA(0): Enabling RENDER acceleration
[ 57603.706] (**) NVIDIA(0): TV Standard string: "PAL-N"
[ 57604.873] (II) NVIDIA(GPU-0): Display (Samsung SyncMaster (DFP-0)) supports NVIDIA 3D Vision
[ 57604.873] (II) NVIDIA(GPU-0):     stereo.
[ 57605.000] (II) NVIDIA(GPU-0): Display (Samsung SyncMaster (DFP-1)) supports NVIDIA 3D Vision
[ 57605.000] (II) NVIDIA(GPU-0):     stereo.
[ 57605.001] (II) NVIDIA(0): NVIDIA GPU GeForce GTX 260 (GT200) at PCI:2:0:0 (GPU-0)
[ 57605.001] (--) NVIDIA(0): Memory: 917504 kBytes
[ 57605.001] (--) NVIDIA(0): VideoBIOS: 62.00.4c.00.01
[ 57605.001] (II) NVIDIA(0): Detected PCI Express Link width: 16X
[ 57605.001] (--) NVIDIA(0): Interlaced video modes are supported on this GPU
[ 57605.001] (--) NVIDIA(0): Connected display device(s) on GeForce GTX 260 at PCI:2:0:0
[ 57605.001] (--) NVIDIA(0):     Samsung SyncMaster (DFP-0)
[ 57605.001] (--) NVIDIA(0):     Samsung SyncMaster (DFP-1)
[ 57605.001] (--) NVIDIA(0): Samsung SyncMaster (DFP-0): 330.0 MHz maximum pixel clock
[ 57605.001] (--) NVIDIA(0): Samsung SyncMaster (DFP-0): Internal Dual Link TMDS
[ 57605.001] (--) NVIDIA(0): Samsung SyncMaster (DFP-1): 330.0 MHz maximum pixel clock
[ 57605.001] (--) NVIDIA(0): Samsung SyncMaster (DFP-1): Internal Dual Link TMDS
[ 57605.005] (**) NVIDIA(0): TwinView enabled
[ 57605.206] (II) NVIDIA(0): Assigned Display Devices: DFP-0, DFP-1
[ 57605.207] (II) NVIDIA(0): Validated modes:
[ 57605.207] (II) NVIDIA(0):     "1680x1050_120,1680x1050_120"
[ 57605.207] (II) NVIDIA(0):     "NULL,1680x1050_120"
[ 57605.207] (II) NVIDIA(0):     "1024x768,NULL"
[ 57605.207] (II) NVIDIA(0): Virtual screen size determined to be 3360 x 1050
[ 57605.244] (--) NVIDIA(0): DPI set to (88, 88); computed from "UseEdidDpi" X config
[ 57605.244] (--) NVIDIA(0):     option
[ 57605.244] (**) NVIDIA(0): Enabling 32-bit ARGB GLX visuals.
[ 57605.244] (--) Depth 24 pixmap format is 32 bpp
[ 57605.244] (II) NVIDIA: Using 768.00 MB of virtual memory for indirect memory access.
[ 57605.255] (II) NVIDIA(0): Setting mode "1680x1050_120,1680x1050_120"
[ 57605.342] (II) Loading extension NV-GLX
[ 57605.393] (==) NVIDIA(0): Disabling shared memory pixmaps
[ 57605.393] (==) NVIDIA(0): Backing store disabled
[ 57605.393] (==) NVIDIA(0): Silken mouse enabled
[ 57605.394] (==) NVIDIA(0): DPMS enabled


I hope this will help you setup your monitor easier.


Last edited by krinn on Wed Jan 25, 2012 7:30 pm; edited 1 time in total
Back to top
View user's profile Send private message
Dominique_71
Veteran
Veteran


Joined: 17 Aug 2005
Posts: 1869
Location: Switzerland (Romandie)

PostPosted: Mon Jan 02, 2012 11:35 am    Post subject: Reply with quote

Thanks for that.

It is another tool in portage, hwinfo, the Suse hardware recognition tool. It doesn't show the same informations: I get only one mode with nvidia-settings and several with hwinfo. The plus with nvidia-settings and parse-edid is than the info is formatted for inclusion in xorg.conf.

Also, a strange result of both ways is than I don't get the current screen mode:

Code:
hwinfo --monitor
40: None 00.1: 10000 Monitor                                   
  [Created at monitor.95]
  Unique ID: jyhG.TzX2mv4fahF
  Hardware Class: monitor
  Model: "SAMSUNG SyncMaster"
  Vendor: SAM "SAMSUNG"
  Device: eisa 0x0109 "SyncMaster"
  Serial ID: "HVAX712516"
  Resolution: 720x400@70Hz
  Resolution: 640x480@60Hz
  Resolution: 640x480@67Hz
  Resolution: 640x480@72Hz
  Resolution: 640x480@75Hz
  Resolution: 800x600@56Hz
  Resolution: 800x600@60Hz
  Resolution: 800x600@72Hz
  Resolution: 800x600@75Hz
  Resolution: 832x624@75Hz
  Resolution: 1024x768@60Hz
  Resolution: 1024x768@70Hz
  Resolution: 1024x768@75Hz
  Resolution: 1280x1024@75Hz
  Resolution: 1280x1024@85Hz
  Resolution: 1024x768@85Hz
  Resolution: 800x600@85Hz
  Resolution: 640x480@85Hz
  Size: 352x264 mm
  Detailed Timings #0:
     Resolution: 1280x1024
     Horizontal: 1280 1344 1504 1728 (+64 +224 +448) +hsync
       Vertical: 1024 1025 1028 1072 (+1 +4 +48) +vsync
    Frequencies: 157.50 MHz, 91.15 kHz, 85.02 Hz
  Driver Info #0:
    Max. Resolution: 1280x1024
    Vert. Sync Range: 50-160 Hz
    Hor. Sync Range: 30-96 kHz
    Bandwidth: 157 MHz
  Config Status: cfg=new, avail=yes, need=no, active=unknown


Code:
parse-edid < edid.bin
parse-edid: parse-edid version 2.0.0
parse-edid: EDID checksum passed.

   # EDID version 1 revision 3
Section "Monitor"
   # Block type: 2:0 3:fd
   # Block type: 2:0 3:fc
   Identifier "SyncMaster"
   VendorName "SAM"
   ModelName "SyncMaster"
   # Block type: 2:0 3:fd
   HorizSync 30-96
   VertRefresh 50-160
   # Max dot clock (video bandwidth) 250 MHz
   # Block type: 2:0 3:fc
   # Block type: 2:0 3:ff
   # DPMS capabilities: Active off:yes  Suspend:no  Standby:no

   Mode    "1280x1024"   # vfreq 85.024Hz, hfreq 91.146kHz
      DotClock   157.500000
      HTimings   1280 1344 1504 1728
      VTimings   1024 1025 1028 1072
      Flags   "+HSync" "+VSync"
   EndMode
   # Block type: 2:0 3:fd
   # Block type: 2:0 3:fc
   # Block type: 2:0 3:ff
EndSection

My current mode is 1600x1200@75Hz. I get it with another Suse tool: during a Suse installation, one of the final steps is to optionally read the monitor installation CD. That way, Yast is able to retrieve all the mode informations supported by the monitor and will write them into xorg.conf. This is a huge list of modes including a 1280x1024@88Hz mode.
_________________
"Confirm You are a robot." - the singularity
Back to top
View user's profile Send private message
krinn
Watchman
Watchman


Joined: 02 May 2003
Posts: 7470

PostPosted: Mon Jan 02, 2012 12:04 pm    Post subject: Reply with quote

tried hwinfo to see, here's what i get
Code:
hwinfo --monitor
35: None 00.0: 10002 LCD Monitor                               
  [Created at monitor.95]
  Unique ID: rdCR.rQl8NIf_F_2
  Hardware Class: monitor
  Model: "SAMSUNG SyncMaster"
  Vendor: SAM "SAMSUNG"
  Device: eisa 0x04ea "SyncMaster"
  Serial ID: "HVNZA00879"
  Resolution: 1680x1050@60Hz
  Size: 478x300 mm
  Detailed Timings #0:
     Resolution: 1680x1050
     Horizontal: 1680 1728 1760 1840 (+48 +80 +160) -hsync
       Vertical: 1050 1053 1059 1080 (+3 +9 +30) +vsync
    Frequencies: 119.00 MHz, 64.67 kHz, 59.88 Hz
  Driver Info #0:
    Max. Resolution: 1680x1050
    Vert. Sync Range: 56-125 Hz
    Hor. Sync Range: 30-190 kHz
    Bandwidth: 119 MHz
  Config Status: cfg=new, avail=yes, need=no, active=unknown

I cannot get my resolution too.

But now xrandr output it correctly, i didn't think to note the xrandr previous version i was using, but this one, now output it as it should. Check xrandr output.
Code:
xrandr --version
xrandr program version       1.3.5
Server reports RandR version 1.3
xrandr -q
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1024 x 768, current 3360 x 1050, maximum 3360 x 1050
default connected 3360x1050+0+0 0mm x 0mm
   3360x1050     120.0*
   1680x1050     120.0 
   1024x768       85.0 
Back to top
View user's profile Send private message
Dominique_71
Veteran
Veteran


Joined: 17 Aug 2005
Posts: 1869
Location: Switzerland (Romandie)

PostPosted: Mon Jan 02, 2012 12:40 pm    Post subject: Reply with quote

Here, xrandr is failing to report the correct modes. It is the same version as yours:

Code:
xrandr -v
xrandr program version       1.3.5
Server reports RandR version 1.3
xrandr -q
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 320 x 175, current 1600 x 1200, maximum 1600 x 1200
default connected 1600x1200+0+0 0mm x 0mm
   1600x1200      50.0*    51.0     57.0     58.0     59.0     60.0 
   1280x1024      52.0     56.0     63.0     64.0
...

According to nvidia-settings, my monitor can do 1600x1024@75, 70, 68, 65 and 60Hz. It is no 50Hz mode for that resolution. Also, it is no 1280x1024#52Hz mode. Even 2048x1536 is at 60Hz. I will soon try with another one monitor, a LCD screen.

What would be great with nvidia-settings and parse-edid is that they would be able to output all the modes that show nvidia-settings.
_________________
"Confirm You are a robot." - the singularity
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Documentation, Tips & Tricks All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum