• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst] Bildschirmauflösung "starr" fixieren auf 1920x1080

Heart

Hacker
Hallo,

ich habe hier einen "Umschalter" an dem zwei PC's hängen (ein Monitor, Keyboard, Maus wird quasi geteilt. Vom Umschalter gehen VGA-Kabel in den Umschalter, also kein DVI/HDMI), 1x Windows, 1x Linux.

Jetzt ist es aktuell so, dass ich zuerst einen PC davon starte und hier komplett den Bootvorgang abwarten muss, damit ich die korrekte Bildschirmauflösung (1920x1080) bekomme. Ist der erste PC bis zur Anmeldung durchgebootet kann ich erst den zweiten PC anschalten und zu diesem wechseln mit dem Umschalter. Auch hier muss ich "dem gesamten Bootvorgang zusehen", damit die Auflösung passt (bei Linux wird sie korrekt gesetzt, wenn KDE-Startgrafik zu sehen ist).

Kann ich das irgendwie umgehen, so dass ich beide PC's gleichzeitig anschalten kann und mir Linux (auch wenn es nicht aktiv am Monitor verfolgt wird) die Auflösung starr/fest auf 1920x1080 setzt?

Danke

(openSUSE 13.2, KDE: 4.14.6, Qt: 4.8.6)
 

josef-wien

Ultimate Guru
Grafikkarte? Treiber?

KMS-fähige Treiber werden in der Regel bereits in der initrd (oder - wenn Du das verhinderst - kurz danach) geladen und holen sich in dieser frühen Phase (also lange vor dem Start der grafischen Oberfläche) die notwendigen Informationen direkt vom Bildschirm, und wenn der nicht angeschlossen und mit Strom versorgt ist, tritt eben eine "Notfallsauflösung" in Kraft. Wird der Bildschirm dann aktiv, werden diese Informationen nachgeholt, daher reicht ein entsprechender xrandr-Befehl, um zur gewünschten Auflösung zu gelangen. Wenn Du das bei inaktivem Bildschirm (z. B. in /etc/X11/xinit/xinitrc) erreichen willst, mußt Du zuerst mit xrandr eine modeline definieren, diese dann dem Anschluß zuweisen und im dritten Schritt aktivieren.

Treiber, die nicht KMS-fähig sind, kannst Du diesbezüglich über /etc/X11/xorg.conf[.d/*] steuern.

P. S. Mein Wissen beruht auf i915 und fglrx, aber ich denke, daß es sich bei anderen Treibern ebenso verhält.
 

manzek

Hacker
Dieses Problem kenne ich auch. Hier muss ich ebenfalls den jeweiligen Bootvorgang abwarten. Boote ich zeitgleich den zweiten Rechner, ist dessen Bild verschoben.
Ich gehe davon aus, dass es an der Autoformat-Funktion des Monitores liegt.

Mein Monitor zu Hause ist da unkritischer, da zickt eher die USB-Komponente wie Tastatur und Maus. Das Problem kann ich allerdings mit einem zweiten Satz Tastatur/Maus lösen...
 
OP
H

Heart

Hacker
@josef-wien PERFEKT! Das lieferte die benötigten Infos.

Ich habe die Datei /etc/X11/xinit/xinitrc ziemlich am Anfang mit folgenden drei Zeilen ergänzt und nun habe ich auch die korrekte Auflösung nach dem Booten, wenn Linux nicht aktiv zu sehen war beim Bootvorgang an sich!

Code:
~  cat /etc/X11/xinit/xinitrc           
#!/bin/bash
#
# Sample .xinitrc for SuSE Linux
# This script is called from 'startx' when you start an X session
#

xrandr --newmode "1920x1080"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
xrandr --verbose --addmode VGA1 "1920x1080"
xrandr --output VGA1 --mode 1920x1080

...
 

josef-wien

Ultimate Guru
An und für sich ist ein Abschnitt
Code:
# Add your own lines here...
vorhanden, aber in der Praxis spielt es keine Rolle. Noch besser ist ein auführbares Skript irgendeinname.sh im Verzeichnis /etc/X11/xinit/xinitrc.d (das "automatisch" verwendet wird). Ich hoffe, Deine modeline stammt aus der in /var/log/Xorg.0.log dokumentierten EDID-Information des Bildschirms (bei einem Start mit inaktivem Bildschirm sollte das nach einem simplen xrandr geschrieben werden) und nicht von cvt, gtf oder ähnlichen Programmen, Dein Bildschirm weiß schließlich am besten, was ihm am liebsten ist.
 
OP
H

Heart

Hacker
Die stammt tatsächlich noch von "cvt 1920 1080" :???: Nicht gut?

Ich habe mal die Datei /var/log/Xorg.0.log durchgesehen, aber eine Modeline (bzw. "EDID-Information") kann ich hier nicht finden:
Code:
➜  ~  cat /var/log/Xorg.0.log |grep -E 'intel|mode|video'
[    33.403] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.16.7-21-desktop root=UUID=d6f2e147-9477-4832-8ae0-604b58e48272 video=1920x1080 resume=/dev/disk/by-id/ata-ST3160815AS_5RX5Q7Y0-part1 splash=silent quiet showopts
[    33.711] (==) Matched intel as autoconfigured driver 0
[    33.711] (==) Matched intel as autoconfigured driver 1
[    33.711] (==) Matched modesetting as autoconfigured driver 2
[    33.711] (II) LoadModule: "intel"
[    33.733] (II) Loading /usr/lib64/xorg/modules/drivers/intel_drv.so
[    33.733] (II) Module intel: vendor="X.Org Foundation"
[    33.733] (II) LoadModule: "modesetting"
[    33.733] (II) Loading /usr/lib64/xorg/modules/drivers/modesetting_drv.so
[    33.733] (II) Module modesetting: vendor="X.Org Foundation"
[    33.734] (II) intel: Driver for Intel(R) Integrated Graphics Chipsets:
[    33.734] (II) intel: Driver for Intel(R) HD Graphics: 2000-6000
[    33.734] (II) intel: Driver for Intel(R) Iris(TM) Graphics: 5100, 6100
[    33.734] (II) intel: Driver for Intel(R) Iris(TM) Pro Graphics: 5200, 6200, P6300
[    33.734] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[    33.734] (II) intel(0): Using Kernel Mode Setting driver: i915, version 1.6.0 20080730
[    33.734] (WW) Falling back to old probe method for modesetting
[    33.735] (--) intel(0): Integrated Graphics Chipset: Intel(R) Q35
[    33.735] (--) intel(0): CPU: x86-64, sse2, sse3, ssse3
[    33.735] (II) intel(0): Creating default Display subsection in Screen section
[    33.735] (==) intel(0): Depth 24, (--) framebuffer bpp 32
[    33.735] (==) intel(0): RGB weight 888
[    33.735] (==) intel(0): Default visual is TrueColor
[    33.735] (II) intel(0): Output VGA1 has no monitor section
[    33.735] (II) intel(0): Enabled output VGA1
[    33.736] (--) intel(0): Using a maximum size of 256x256 for hardware cursors
[    33.736] (II) intel(0): Output VIRTUAL1 has no monitor section
[    33.736] (II) intel(0): Enabled output VIRTUAL1
[    33.736] (--) intel(0): Output VGA1 using initial mode 1024x768 on pipe 0
[    33.736] (==) intel(0): TearFree disabled
[    33.736] (==) intel(0): DPI set to (96, 96)
[    33.736] (II) UnloadModule: "modesetting"
[    33.736] (II) Unloading modesetting
[    33.736] (II) intel(0): SNA initialized with Alviso (gen3) backend
[    33.736] (==) intel(0): Backing store enabled
[    33.736] (==) intel(0): Silken mouse enabled
[    33.736] (II) intel(0): HW Cursor enabled
[    33.736] (II) intel(0): RandR 1.2 enabled, ignore the following RandR disabled message.
[    33.736] (==) intel(0): DPMS enabled
[    33.736] (II) intel(0): [XvMC] i915_xvmc driver initialized.
[    33.736] (II) intel(0): [DRI2] Setup complete
[    33.736] (II) intel(0): [DRI2]   DRI driver: i915
[    33.736] (II) intel(0): [DRI2]   VDPAU driver: i915
[    33.736] (II) intel(0): direct rendering: DRI2 enabled
[    33.736] (II) intel(0): hardware support for Present enabled
[    33.736] (==) intel(0): display hotplug detection enabled
[    33.753] (II) intel(0): switch to mode 1024x768@60.0 on VGA1 using pipe 0, position (0, 0), rotation normal, reflection none
[    33.756] (II) intel(0): Setting screen physical size to 270 x 203
[    34.114] (**) Option "xkb_model" "pc105"
[    34.136] (**) Option "xkb_model" "pc105"
[    34.137] (**) Option "xkb_model" "pc105"
[    34.139] (**) Option "xkb_model" "pc105"
[    34.142] (**) Option "xkb_model" "pc105"
[    34.248] (II) intel(0): SNA initialized with Alviso (gen3) backend
[    34.248] (II) intel(0): HW Cursor enabled
[    34.248] (II) intel(0): RandR 1.2 enabled, ignore the following RandR disabled message.
[    34.248] (==) intel(0): DPMS enabled
[    34.248] (II) intel(0): [XvMC] i915_xvmc driver initialized.
[    34.248] (II) intel(0): [DRI2] Setup complete
[    34.248] (II) intel(0): [DRI2]   DRI driver: i915
[    34.248] (II) intel(0): [DRI2]   VDPAU driver: i915
[    34.248] (II) intel(0): direct rendering: DRI2 enabled
[    34.248] (II) intel(0): hardware support for Present enabled
[    34.248] (==) intel(0): display hotplug detection enabled
[    34.260] (II) intel(0): switch to mode 1024x768@60.0 on VGA1 using pipe 0, position (0, 0), rotation normal, reflection none
[    34.261] (II) intel(0): Setting screen physical size to 270 x 203
[    34.305] (**) Option "xkb_model" "pc105"
[    34.327] (**) Option "xkb_model" "pc105"
[    34.328] (**) Option "xkb_model" "pc105"
[    34.330] (**) Option "xkb_model" "pc105"
[    34.333] (**) Option "xkb_model" "pc105"
[    34.424] (II) intel(0): SNA initialized with Alviso (gen3) backend
[    34.424] (II) intel(0): HW Cursor enabled
[    34.424] (II) intel(0): RandR 1.2 enabled, ignore the following RandR disabled message.
[    34.424] (==) intel(0): DPMS enabled
[    34.424] (II) intel(0): [XvMC] i915_xvmc driver initialized.
[    34.424] (II) intel(0): [DRI2] Setup complete
[    34.424] (II) intel(0): [DRI2]   DRI driver: i915
[    34.424] (II) intel(0): [DRI2]   VDPAU driver: i915
[    34.424] (II) intel(0): direct rendering: DRI2 enabled
[    34.424] (II) intel(0): hardware support for Present enabled
[    34.424] (==) intel(0): display hotplug detection enabled
[    34.438] (II) intel(0): switch to mode 1024x768@60.0 on VGA1 using pipe 0, position (0, 0), rotation normal, reflection none
[    34.439] (II) intel(0): Setting screen physical size to 270 x 203
[    34.483] (**) Option "xkb_model" "pc105"
[    34.506] (**) Option "xkb_model" "pc105"
[    34.506] (**) Option "xkb_model" "pc105"
[    34.508] (**) Option "xkb_model" "pc105"
[    34.512] (**) Option "xkb_model" "pc105"
[    38.555] (II) intel(0): resizing framebuffer to 1920x1080
[    38.587] (II) intel(0): switch to mode 1920x1080@60.0 on VGA1 using pipe 0, position (0, 0), rotation normal, reflection none
 

josef-wien

Ultimate Guru
Nachdem mein Wissensdurst meine angeborene Faulheit wieder einmal besiegt hat, habe ich mich jetzt kurz auch mit den Alternativen zu xrandr beschäftigt. Diese Beitrag zeigt die Reaktionen meines PC und meines Bildschirms und gilt für einen Systemstart mit ausgeschaltetem Bildschirm, denn bei eingeschaltetem Bildschirm paßt bei mir jede in diesem Thema erwähnte Variante.

Mit der Boot-Option drm_kms_helper.edid_firmware=VGA-1:edid/1280x1024.bin funktioniert bei mir alles bestens, die vom Kernel-Modul erzeugte modeline ist genau das, was mein Bildschirm gern hat. Laut drivers/gpu/drm/drm_edid_load.c meines Vanilla-Kernel 4.0.4 sind folgende Auflösungen integriert: 800x600.bin, 1024x768.bin, 1280x1024.bin, 1600x1200.bin, 1680x1050.bin, 1920x1080.bin

Wenn ich das Verzeichnis /lib/firmware/edid anlege, mit
Code:
get-edid > /lib/firmware/edid/monitor.bin
(aus dem Paket read-edid) die EDID-Daten meines Bildschirms speichere und eine initrd erstelle, die diese Daten enthält, funktioniert mit der Boot-Option drm_kms_helper.edid_firmware=VGA-1:edid/monitor.bin ebenfalls alles bestens. Bei der üblichen Eintragung NO_KMS_IN_INITRD="no" in /etc/sysconfig/kernel geht es ohne entsprechende initrd nicht, da werden zwar die EDID-Daten erkannt, es bleibt aber bei der Auflösung 1024x768. Zu dracut kann ich nichts sagen, bei mkinitrd reicht ein Skript /lib/mkinitrd/scripts/edid.sh, z. B.:
Code:
#!/bin/bash

#%stage: boot
#
#  EDID-firmware integrieren
#

verz=/lib/firmware/edid
if [ -d $verz ]
then
  if [ "$(ls -A $verz)" ]
  then
    mkdir -p "$tmp_mnt"$verz
    cp $verz/* "$tmp_mnt"$verz
    echo "Die Dateien aus $verz wurden integriert."
  fi
fi
Die Boot-Option video=VGA-1:1280x1024-24@60 funktioniert mit dem Nachteil einer modeline, die zwar keine Probleme verursacht, aber eben (wie die unterschiedlichen Ergebnisse von cvt und gtf) nicht das ist, was sich mein Bildschirm wünscht.

Kernel und Xorg haben haben übrigens unterschiedliche Namenskonventionen.
 
Oben