uvesafb mit mehr als 60Hz

Nachdem nun schon seit einer Weile vesafb nicht mehr aktiv war, wollte ich letztens die Auflösung des Konsolen-Framebuffers wieder erhöhen. Dabei stellte sich heraus, daß vesafb durch uvesafb abgelöst wurde, welches einige Funktionen in den Userspace verlagert. Außer der Aktivierung der Kerneloption werden noch (unter Gentoo) eine Neukompilierung von klibc und als Userspace-Teil v86d benötigt. Eine genaue Anleitung gibts auf der Projektseite beim Autor.

Gegenüber vesafb ändert sich im besten Fall nicht viel in den Kernelparametern. In meinem Fall lautete der neue Eintrag:

video=uvesafb:ywrap,1280x1024-32@85

Nur auf 85Hz kam ich nach einem Reboot leider nicht, stattdessen flimmerte der Monitor mit 60Hz vor sich hin. Scheinbar können von vielen Nvidia-Karten die Werte des Monitors nicht ausgelesen werden. Allerdings lassen sich ersatzweise 3 Parameter übergeben, mit denen der Wechsel in die höhere Bildwiederholrate gelingt:

  1. maxhf – maximale horizontale Frequenz
  2. maxvf – maximale vertikale Frequenz
  3. maxclk – Takt des Grafikchips

Die ersten beiden Werte hat man schonmal in /etc/X11/xorg.conf eingetragen, Section Monitor, in meinem Fall HorizSync 30.0 - 96.0 und VertRefresh 50.0 - 160.0. Den Takt verrät Xorg beim Start und lässt sich im Logfile wiederfinden. cat /var/log/Xorg.0.log | grep -i hz liefert bei mir: (--) NVIDIA(0): STN SAMTRON (CRT-1): 350.0 MHz maximum pixel clock

So lassen sich dann folgende Parameter ergänzen: video=uvesafb:ywrap,1280x1024-32@85,maxhf:96,maxvf:160,
maxclk:350

dmesg meldet dann:
uvesafb: NVIDIA Corporation, NV28 Board, Chip Rev A0, OEM: NVIDIA, VBE v3.0
uvesafb: protected mode interface info at c000:e740
uvesafb: pmi: set display start = c00ce785, set palette = c00ce80a
uvesafb: pmi: ports = b4c3 b503 ba03 c003 c103 c403 c503 c603 c703 c803 c903 cc03 ce03 cf03 d003 d103 d203 d303 d403 d503 da03 ff03
uvesafb: VBIOS/hardware doesn't support DDC transfers
uvesafb: monitor limits: vf = 160 Hz, hf = 96 kHz, clk = 350 MHz
uvesafb: scrolling: ywrap using protected mode interface, yres_virtual=4915
uvesafb: framebuffer at 0xd8000000, mapped to 0xf8880000, using 24576k, total 65536k